Drain the beans and add them to a large pot. Cover with at least 2 inches of cold water. Add a tablespoon of coarse salt*, 3 bay leaves, 2-3 whole sprigs of sage, 4 cloves garlic, peeled and smashed. Add the Parmesan cheese rind**, too. Bring to a boil, then lower the heat and boil gently until the beans are just tender but still firm, about 40 minutes. Drain the beans and reserve the liquid (and parm rind.)
Meanwhile fry the bacon, in 2 batches. Remove and drain the first batch. After the second batch is nicely browned add the minced onion, celery, and carrot to the pan and sauté until nice and soft, stirring often. Add the drained bacon and the remaining 4 cloves of smashed garlic to the pot.
Add the 1 Tbsp tomato paste*** to the pan and sauté to 'toast' it and bring out the flavor. Add the beans to the soup (I also transfer the cheese rind.) Add about 2 cups of the reserved bean cooking water along with 4 cups chicken stock. Add some fresh sage sprigs as well.
Bring the soup to a simmer, then loosely cover and simmer gently for about 20-30 minutes. Taste to adjust the seasonings. Add more bean water or stock as needed.
Remove the whole herbs and cheese rind. The soup can be cooled and refrigerated at this point or served right away.
Serve topped with croutons, sage leaves and grated cheese, if you like.
The soup will keep in the fridge for a week.
Notes
*Bean-salting advice has evolved! The current consensus is to salt the water from the start when cooking dried beans for best seasoning. The “salt at the end” approach is outdated.**Parm rind is liquid gold for soup ~ drop a cleaned Parmesan rind (2–3 inches) into the pot as it simmers and it quietly melts flavor into the broth: nutty, savory, a little silky from natural glutamates. Fish it out before serving.***The tomato paste tints the soup a lovely color, but doesn't make it taste like a tomato based soup, so don't skip it. I keep a tube of tomato paste in my fridge for recipes like this where a little dab is needed.