A thick Tuscan bread soup loaded with cannellini beans and lacinato kale, simmered with a parmesan rind until rich and stew-like.
Ribollita literally means "reboiled" in Italian, and it's one of those recipes that gets better the longer it sits. It's a Tuscan peasant soup that was originally made from yesterday's leftover minestrone, thickened with stale bread and reheated the next day. That bread breaks down and turns the whole thing from a soup into almost a stew, thick, hearty, and way more satisfying than you'd expect from something that's basically vegetables and beans.
The double dose of cannellini beans is what makes this work for protein goals. Two full cans go in, and by the time they've simmered for 30-plus minutes, some of them start to break down and thicken the broth naturally. That, combined with the bread, gives you a texture that feels rich and substantial. The parmesan rind is the secret move. Toss it in while the soup simmers and it slowly melts, releasing this deep umami flavor that makes the whole pot taste like it's been cooking for hours. Then you grate more fresh parmesan on top when you serve it. At 22g protein per bowl, this is legitimately filling.
This is one of my favorite freezer meals. I'll make a double batch, portion it into containers, and freeze half. It reheats from frozen perfectly, actually better than fresh, because all those flavors have had time to merge together. The bread gets even thicker and more stew-like. It's the kind of meal that makes eating well feel effortless, which is basically the whole game when you're trying to stay consistent with nutrition.
Traditional ribollita uses a moderate amount of beans and focuses more on bread and vegetables, delivering about 10-12g protein per serving. We use two full cans of cannellini beans, simmer with a parmesan rind, and finish with generous grated parmesan to reach 22g protein per serving.