There is a reason Italian nonnas have been simmering white beans with greens for centuries: the combination is nothing short of extraordinary, both in flavour and in what it does for the body. Cannellini beans are one of the most iron-dense plant foods available, providing non-heme iron in quantities that rival many meat-based dishes. Paired with spinach, which contributes its own meaningful iron load alongside folate, magnesium, and vitamin K, this soup becomes a mineral powerhouse wrapped in a silky, herb-scented broth.
What elevates this recipe beyond a simple bean soup is the deliberate nutritional architecture at work. The tomatoes and lemon juice in the broth supply vitamin C at the same moment you consume the iron-rich beans and spinach, a pairing that research confirms can increase non-heme iron absorption by two to three times. We also use a mirepoix base cooked slowly in olive oil to build genuine depth, then finish with rosemary, thyme, and a Parmesan rind if you have one on hand, adding glutamates that make the broth taste as though it has been simmering all day even on the stovetop version.
At Calibrated Cuisine, every recipe earns its place on the table by delivering measurable nutritional benefit without sacrificing an ounce of pleasure. This soup provides 45% of the daily iron requirement for an average adult, alongside significant folate, magnesium, potassium, and vitamin K, all within a moderate-calorie, high-fiber bowl that will keep you satiated for hours. Whether you choose the stovetop method for a weeknight dinner in under an hour, the slow cooker for a hands-off weekend batch, or the pressure cooker when time is tight, each approach is calibrated to coax the best possible texture and flavour from these humble, heroic ingredients.
4
servings
Ingredients
- 2 tbspextra-virgin olive oil
- 1 mediumyellow onion, finely diced
- 3 mediumcarrots, peeled and diced into 1cm pieces
- 3 stalkscelery, diced into 1cm pieces
- 4 clovesgarlic, minced
- 2 tbsptomato paste
- 400 gcanned diced tomatoes (one 400g tin)
- 900 gcanned cannellini beans, drained and rinsed (two 400g tins, drained weight approximately 480g)
- 1.2 litreslow-sodium vegetable stock
- 1 sprigfresh rosemary
- 3 sprigsfresh thyme
- 1 pieceParmesan rind, approximately 5cm (optional, omit for vegan)
- 150 gbaby spinach, washed
- 2 tbspfresh lemon juice (about 1 lemon)
- 1 tsplemon zest
- 0.5 tspsmoked paprika
- 0.25 tspred pepper flakes
- —Fine sea salt and freshly cracked black pepper to taste
- —Extra-virgin olive oil and crusty bread, to serve
Instructions
🔧 Equipment
- Heat the olive oil in a large Dutch oven or heavy-bottomed pot over medium heat. Once shimmering, add the onion, carrots, and celery with a pinch of salt. Cook, stirring occasionally, for 8 to 10 minutes until the vegetables are softened and the onion is translucent and beginning to turn golden at the edges.
- Push the softened vegetables to the sides of the pot and add the garlic and tomato paste to the centre. Cook the tomato paste, stirring it into the hot oil, for 90 seconds until it deepens from bright red to a rusty brick colour. This step caramelises the sugars in the paste and removes the raw flavour. Stir everything together to combine with the vegetables.
- Add the smoked paprika and red pepper flakes, stir for 30 seconds, then pour in the canned diced tomatoes. Use a wooden spoon to scrape up any browned bits from the base of the pot. Add the cannellini beans, vegetable stock, rosemary sprig, thyme sprigs, and Parmesan rind if using. Stir to combine.
- Bring the soup to a vigorous boil over high heat, then reduce the heat to medium-low. Partially cover the pot and simmer for 20 minutes, stirring occasionally, until the broth has reduced slightly and the carrots are completely tender. The Parmesan rind will have softened and released its savory depth into the broth.
- Remove and discard the rosemary sprig, thyme sprigs, and Parmesan rind. Using a potato masher or the back of a large spoon, crush roughly one quarter of the beans directly in the pot against the side. This thickens the broth naturally without the need for any starch or cream, giving it a rich, velvety body.
- Increase the heat to medium and add the baby spinach in two large handfuls, stirring each addition until wilted before adding the next. This prevents steaming rather than wilting. Once all the spinach is incorporated and bright green, remove the pot from the heat.
- Stir in the lemon juice and lemon zest. Taste and adjust salt and black pepper. Ladle into bowls, drizzle each serving with a little extra-virgin olive oil, and serve immediately with crusty bread for dunking.
- To the insert of a 5-litre or larger slow cooker, add the diced onion, carrots, celery, minced garlic, tomato paste, smoked paprika, and red pepper flakes. Stir together so the tomato paste is dispersed through the vegetables rather than sitting in a lump. There is no need to pre-saute for the slow cooker, but if you have 10 minutes, a quick saute of the aromatics in olive oil in a skillet first will noticeably deepen the final flavour.
- Add the canned diced tomatoes with their juices, drained cannellini beans, and vegetable stock. Nestle in the rosemary sprig, thyme sprigs, and Parmesan rind if using. Drizzle in the olive oil. Stir gently to combine, then place the lid on the slow cooker.
- Cook on Low for 6 to 8 hours or on High for 3 to 4 hours. The soup is ready when the carrots are completely tender and the broth has turned a deep amber-gold. The extended cooking time allows the beans to partially break down, releasing their starch and naturally thickening the soup without any intervention.
- Remove and discard the rosemary, thyme, and Parmesan rind. Use a ladle to scoop out approximately one cup of beans and vegetables and transfer to a small bowl. Mash with a fork into a rough puree, then stir this back into the slow cooker. This reinforces the natural thickening and gives the broth a slightly creamy consistency.
- Add all of the baby spinach directly to the slow cooker, replace the lid, and cook on High for a further 10 to 15 minutes until the spinach is fully wilted and tender. Finish by stirring in the lemon juice and lemon zest. Taste, adjust seasoning, and serve with a drizzle of olive oil in each bowl.
- Select the Saute function on your electric pressure cooker (or use the stovetop pressure cooker over medium-high heat). Add the olive oil and heat until shimmering. Add the onion, carrots, and celery and saute for 5 minutes, stirring frequently, until softened. The Saute function on most models runs hot, so watch carefully to avoid scorching.
- Add the garlic, tomato paste, smoked paprika, and red pepper flakes. Stir and cook for 60 to 90 seconds until the tomato paste has darkened and is fragrant. Pour in a small splash of the vegetable stock and deglaze the pot, scraping up any browned bits from the bottom. This step is essential in a pressure cooker: any stuck residue will trigger a burn warning.
- Add the canned diced tomatoes, drained cannellini beans, and remaining vegetable stock. Nestle in the rosemary, thyme, and Parmesan rind if using. Do not add the spinach or lemon juice yet. Stir to combine, then secure the lid and set the steam release valve to Sealing.
- Cook on High Pressure for 8 minutes. When the cooking cycle is complete, allow the pressure to release naturally for 10 minutes, then carefully turn the valve to Venting to release any remaining steam before opening the lid.
- Remove the rosemary, thyme, and Parmesan rind. The beans should be very tender and some will have naturally broken down. Use a potato masher to gently crush a quarter of the beans against the side of the pot to thicken the broth. Switch back to the Saute function (or medium heat on stovetop), add all the spinach, and stir for 2 to 3 minutes until fully wilted. Turn off the heat, stir in lemon juice and zest, season with salt and pepper, and serve immediately.
Nutrition Breakdown
Per 1 serving (makes 4)
Vitamins & Minerals
% Daily Value based on a 2,000 calorie diet (FDA reference)
🧬 Essential Amino Acids
% of recommended daily intake (RDA) per serving
🛡 Antioxidant Profile
The Nutrition Science
The central nutritional strategy of this soup is the deliberate co-delivery of non-heme iron with vitamin C, a pairing food scientists call an iron-absorption enhancer. Non-heme iron, the form found exclusively in plant foods like cannellini beans and spinach, is absorbed at a base rate of roughly 2 to 8 percent under typical conditions. However, ascorbic acid (vitamin C) reduces ferric iron (Fe3+) to ferrous iron (Fe2+) in the gut and forms a chelate complex that remains soluble in the alkaline environment of the small intestine, where absorption occurs. Clinical studies have shown this mechanism increases non-heme iron absorption by 200 to 300 percent. In this recipe, the lemon juice and diced tomatoes supply approximately 28mg of vitamin C per serving alongside 8.1mg of iron, a purposeful pairing that turns a good iron source into an exceptional one.
Cannellini beans are nutritionally remarkable beyond their iron content. They are among the richest dietary sources of folate, providing around 130mcg per cooked cup, which supports DNA synthesis, red blood cell formation, and neural tube development. Their high phosphorus content (roughly 200mg per cup) pairs with the magnesium from spinach to support ATP energy metabolism and bone mineralisation. The resistant starch in cannellini beans, which survives digestion and reaches the colon intact, feeds beneficial Bifidobacterium and Lactobacillus species and is fermented into short-chain fatty acids, particularly butyrate, which is the primary energy source for colonocytes and has anti-inflammatory effects on the gut lining. This resistant starch also explains why the glycemic load of this soup remains moderate despite its carbohydrate density.
Spinach contributes an extraordinary 290mcg of vitamin K per serving, primarily as phylloquinone (K1), which activates osteocalcin (a protein that binds calcium into bone matrix) and the clotting factors II, VII, IX, and X. Its lutein and zeaxanthin content, approximately 12mg per serving, is among the highest of any cooked vegetable and is associated in prospective cohort studies with a significantly reduced risk of age-related macular degeneration. The manganese in this dish (78% DV, drawn from both spinach and beans) serves as a cofactor for superoxide dismutase, the mitochondria’s primary antioxidant enzyme, directly supporting cellular energy production and oxidative stress defence.
Pro Tips
- If you have a Parmesan rind in the freezer, use it. It will not make the soup taste cheesy but it releases glutamates, amino acids, and a subtle savory richness into the broth that deepens the overall flavour far beyond what the label suggests. Remove it before serving.
- To maximise iron absorption, avoid drinking coffee or black tea within 60 minutes of eating this soup. Tannins and chlorogenic acids in these drinks bind non-heme iron in the gut and can reduce absorption by up to 60 percent. Green tea has a lesser but still measurable inhibitory effect.
- For a richer, more rustic texture, use dried cannellini beans soaked overnight and cooked until just tender before adding to the recipe. Dried beans contain slightly more resistant starch than canned and absorb the herb-infused broth more fully during cooking, giving the finished soup a more complex, integrated flavour.







Love this question, Laurie, because bioavailability is literally everything and most recipes just throw numbers at you without the context. The lemon is clutch here, and I’m assuming the olive oil at the finish helps too, but I’d be curious if the post addresses cooking method for the spinach since heat can actually reduce oxalic acid content. From a T1D perspective, I’m also eyeing that glycemic load since beans are a game-changer for my blood sugar when paired with fat and fiber, so this combo seems solid, but I’d want to know the exact portions to predict my spike. Postpartum iron needs are no joke, so tracking how you actually feel after eating this would
Log in or register to replyooh yes! this is such a smart conversation because the bioavailability piece is SO real – i love that lemon is already in there since vitamin c seriously boosts non-heme iron absorption. and honestly, if you wanted to take it a step further, fermenting the white beans or even doing a quick lacto ferment of the spinach beforehand can reduce some of that oxalic acid naturally while also feeding your gut microbiome at the same time! ive noticed when i make soups with fermented greens the iron absorption just feels different in my body (total n=1 but ive definitely felt the difference lol). the combination of vitamin c, fat from the olive oil, plus
Log in or register to replyThis looks amazing, but I’m curious about the bioavailability here since spinach’s oxalic acid can inhibit iron absorption. Are you pairing this intentionally with vitamin C (the lemon is smart!) and/or fat to maximize that 45%? As someone postpartum trying to rebuild my iron stores, I’m always calculating these angles. Also wondering if there’s any choline in here beyond the beans, since I’m obsessing over brain development for my baby while recovering myself. Would love to know if you tested this on actual iron levels or if it’s just calculated nutrition data!
Log in or register to reply