To soak the beans overnight, place them in a large bowl or pot and cover them with a few inches of water. Drain the beans in the morning.
Heat a large pot over medium heat and add the butter and olive oil. Stir in the onion, garlic, salt, pepper and pepper flakes. Cook until the onions soften, about 5 minutes.
Stir in the carrots and cook for 5 minutes more. Stir in the tomato paste, stirring to coat all the vegetables in the pot.
Add the diced tomatoes and vegetable stock. Add the bread in chunks. Stir in the beans, parmesan cheese and parmesan rind. Bring the mixture to a boil, then reduce it to a simmer and cover it. Cook for 30 to 40 minutes, stirring occasionally to make sure nothing is sticking to the bottom. If it is, reduce the heat!
When the soup is finished, the bread will have mostly disintegrated into the soup. You can taste and season the soup here if you wish - add more salt and pepper if it doesn’t seem to have enough flavor. This step is important! All canned tomatoes can be different in salt quantities, so be sure to taste and adjust the flavor to your linking.
5 to 10 minutes before serving, stir in the kale. I love that the kale has a crisp chew and texture to it. If you prefer it to be softer and more wilted, you can add it in earlier or cook the soup a bit longer. The kale gets softer as it sits.
Serve the soup with lots of grated parmesan for topping.