The night before, place the beans in a large bowl and add enough cool water to cover the beans by 2-3 inches. Let the beans soak in the refrigerator over night.
The next day, cut the bacon into one-inch pieces. Cook the bacon in a large pot over medium heat until brown and crispy. Remove the bacon to a paper towel lined plate and pour off most of the grease, leaving a tablespoon or two in the pot.
While the bacon is cooking, dice the onion and mince the garlic. Peel and slice the carrots, and slice the celery. Sauté the onion, garlic, carrots, and celery in the leftover bacon grease over medium heat until the onions are soft and transparent (about five minutes). Use the moisture from the vegetables to help dissolve the browned bits of bacon from the bottom of the pot.
While the vegetables are sautéing, peel the potatoes then cut them into 1/2-inch cubes. Drain the soaked beans in a colander and rinse them briefly.
Add the cubed potatoes, rinsed beans, and chicken broth to the pot. Cover the pot and bring it up to a boil. Reduce the heat slightly and let the pot boil gently for one hour, or until the beans and potatoes are very soft.
Use an immersion blender to purée about half of the soup, leaving some beans and vegetables whole. If you don't have an immersion blender, remove half of the soup from the pot, let it cool slightly, then use a blender or food processor to carefully purée the warm soup. Return the puréed soup to the pot and stir to combine with the rest.
Add the tomato sauce and reserved bacon to the soup. Stir and heat until warm. Taste the soup and add salt and pepper if needed. Serve hot.