creamy white bean soup

Vegan White Bean Soup — The Most Comforting Most Deeply Flavored Plant-Based Soup You Will Make All Winter

vegan white bean soup

There is a particular kind of soup that is not showy, not dramatic, not built around an unusual ingredient or a technique that requires explanation — and that is, quietly, one of the most satisfying things you can eat. This Vegan White Bean Soup is that kind of soup. It is a soup of humble ingredients: white beans, onion, celery, carrot, garlic, tomato, leafy greens, vegetable stock, and herbs. It is a soup that has been made in some version across the Mediterranean and Southern Europe for centuries and that has never needed to be reinvented because it was right the first time. But within that simplicity there is a very specific technique that separates a white bean soup that is merely good from one that is genuinely memorable — a soup where the broth is thick and velvety and deeply savory, where the beans are creamy and yielding without being mushy, where the vegetables are soft but not collapsed, and where every spoonful delivers a unified, coherent flavor rather than the impression of separate ingredients floating in water. This recipe produces that soup, reliably and repeatedly, in approximately 40 minutes from start to finish, using a single pot, and it is the kind of soup that makes a person feel genuinely well-taken-care-of in a way that very few other things in cooking manage to achieve.

The secret is the smash-and-simmer technique. The single most important element of a great white bean soup is the broth’s body — that thick, slightly viscous, deeply savory quality that distinguishes a properly made bean soup from one that tastes of thin vegetable stock with beans floating in it. The smash-and-simmer technique achieves this by removing approximately one-third of the cooked beans from the soup at the point when the vegetables are fully tender, mashing them roughly with a fork or a potato masher into a coarse, thick paste, and stirring them back into the pot. The mashed beans dissolve almost completely into the broth, releasing their starch into the liquid and thickening it from within — not with the abrupt, slightly starchy quality of cornstarch or flour, but with the smooth, creamy, protein-rich body that only beans can provide. The remaining two-thirds of the beans stay whole, providing the textural contrast of intact, creamy beans against the thickened broth. The effect is extraordinary: the same pot of soup before and after the smash-and-simmer step tastes and feels completely different. Before: a pleasant, clear vegetable broth with beans. After: a thick, velvety, deeply unified soup where the broth and the beans feel like one thing rather than two things in the same bowl. It is one of those techniques that costs almost no effort and transforms the result so dramatically that it is impossible to go back to making white bean soup without it.

What makes this recipe so outstanding is the layering of flavor built before the stock and beans are added. The foundation is a soffritto — the Italian aromatic base of onion, celery, carrot, and garlic cooked slowly in olive oil until completely soft, translucent, and beginning to caramelize at the edges. Unlike a French mirepoix (which is used as a flavor base for stocks and sauces and typically removed before serving), an Italian soffritto is cooked directly into the dish and becomes part of it, and the 10–12 minutes of gentle cooking that a proper soffritto requires is the difference between a soup whose vegetable flavors are raw and separate and one where they have melded into a single, unified aromatic base. To the soffritto is added tomato paste (caramelized for 2 minutes until brick-dark), dried rosemary, dried thyme, and a whole sprig of fresh rosemary that simmers in the pot throughout the cooking and is removed before serving. The fresh rosemary performs a different function from the dried: dried rosemary contributes its ground, woody, slightly camphorous flavor throughout the cooking; the whole fresh sprig releases a more volatile, floral, top-note rosemary aroma into the broth that dried rosemary cannot replicate. Together, the dried herbs in the soffritto and the fresh sprig in the broth give the soup a herbal depth that has both body (from the dried) and brightness (from the fresh) — a technique borrowed from the Tuscan ribollita tradition, the closest relative of this soup in the Italian canon.

This recipe is 100% vegan, naturally gluten-free, and produces a soup that is genuinely better on the second and third days as the flavors continue to develop. It serves 6 generously from a single pot and freezes beautifully.


Recipe Information

Prep TimeCook TimeTotal TimeServingsCalories
10 mins30 mins40 mins6 servings~340 kcal

Ingredients

For the Soffritto Base

  • 3 tbsp extra-virgin olive oil (plus more for drizzling at the table)
  • 1 large yellow onion, finely diced (approximately 200g)
  • 3 stalks celery, finely diced (approximately 150g)
  • 2 medium carrots, finely diced (approximately 150g)
  • 6 cloves garlic, finely minced
  • 2 tbsp tomato paste
  • 1 tsp dried rosemary
  • 1 tsp dried thyme
  • ½ tsp dried oregano
  • ¼ tsp red chilli flakes (optional — adds a gentle background warmth)
  • ½ tsp fine salt (for the soffritto stage; more added later to the broth)
  • ¼ tsp ground black pepper

For the Soup

  • 2 cans (2 × 400g / 14oz each) white beans — cannellini beans are the first choice (their large size and creamy, buttery texture make them ideal for this soup); navy beans or butter beans also work well; drain and rinse both cans
  • 1 can (400g / 14oz) diced tomatoes (with juices)
  • 1 litre (4 cups) good-quality vegetable stock
  • 1 sprig fresh rosemary (approximately 10cm / 4 inches long)
  • 2 bay leaves
  • 150g (5oz) cavolo nero (Tuscan black kale), kale, or baby spinach — cavolo nero is the most traditional choice and adds a slightly bitter, deeply savory note that regular kale and spinach do not have; if using kale or cavolo nero, strip the leaves from the tough central stems and roughly chop; if using spinach, add it in the last 2 minutes only as it wilts very rapidly

For Finishing

  • Juice of ½ lemon (added off the heat — brightens the entire soup and is the single most important finishing step; do not skip)
  • Extra-virgin olive oil, for drizzling generously into each bowl
  • Flaky sea salt and freshly ground black pepper, for finishing
  • Crusty bread or sourdough, for serving (essential)
  • Optional: 2 tbsp nutritional yeast stirred into the soup in the last 5 minutes (adds a savory, slightly cheesy depth that amplifies the soup’s umami without dairy)
  • Optional: freshly grated lemon zest over each bowl at serving

Instructions

  1. Build the soffritto. Heat the olive oil in a large, heavy-bottomed pot or Dutch oven over medium heat until shimmering. Add the diced onion, celery, and carrot with ½ teaspoon of salt. Cook, stirring occasionally, for 10–12 minutes over medium heat until the vegetables are completely soft, translucent, and just beginning to turn golden at the edges. Do not rush this stage by increasing the heat — a soffritto that is browned quickly at high heat rather than softened slowly at medium heat loses the sweet, rounded depth that comes from gentle, patient cooking. Add the minced garlic and cook for 1 further minute, stirring, until fragrant.
  2. Caramelize the tomato paste and bloom the spices. Add the tomato paste, dried rosemary, dried thyme, dried oregano, chilli flakes, and black pepper to the pot. Stir vigorously over medium-high heat for 2 minutes until the tomato paste has darkened from bright red to a deep brick color and is beginning to stick slightly to the bottom of the pot. This caramelization step concentrates the tomato paste’s flavor and adds a subtle sweetness that raw tomato paste does not have.
  3. Add the liquid and beans. Pour in the diced tomatoes (with their juices) and stir to deglaze the pot, scraping up any caramelized bits from the bottom. Add the vegetable stock, drained cannellini beans, fresh rosemary sprig, and bay leaves. Stir to combine. Bring to a boil over high heat, then reduce the heat to medium-low and simmer, partially covered, for 15 minutes until the vegetables are completely tender throughout and the broth has deepened in color and flavor.
  4. Apply the smash-and-simmer technique. Using a slotted spoon, remove approximately one-third of the beans from the pot (approximately 1 heaped cup of beans) and place them in a shallow bowl. Mash them thoroughly with a fork or potato masher into a coarse, thick paste — some texture is fine and desirable; the goal is not a smooth purée but a rough, thick mash that will dissolve readily into the broth. Stir the mashed beans back into the pot and increase the heat to medium. Cook uncovered for a further 5 minutes, stirring occasionally, until the broth has thickened to a velvety, soup-coating consistency. The soup is ready at this stage when a spoonful of broth lifted and dropped back into the pot leaves a visible trail on the surface for 1–2 seconds before closing.
  5. Add the greens. Add the roughly chopped cavolo nero or kale and stir to submerge it in the broth. Cook for 3–5 minutes until the greens are completely wilted and tender (cavolo nero takes slightly longer than regular kale; both are done when the leaves are dark, completely soft, and have lost their raw bitterness). If using baby spinach, add it in the final 2 minutes only.
  6. Finish the soup. Remove and discard the fresh rosemary sprig and bay leaves. Stir in the nutritional yeast if using. Remove from heat and add the lemon juice — stir well and taste the soup immediately after the lemon is added, because the acidity transforms the flavor: it brightens the herbs, sharpens the savory notes, and makes the soup taste more coherent and more complete. Adjust the seasoning with salt and pepper to taste. The soup should be richly savory, slightly herbal, with a gentle tomato note and a bright, clean finish.
  7. Serve. Ladle into deep bowls. Drizzle each bowl generously with extra-virgin olive oil — not as a decoration but as a genuine flavor component; the fruity, peppery quality of a good olive oil adds a final layer of depth that completes the soup. Scatter with flaky sea salt, a few grinds of black pepper, and lemon zest if using. Serve with crusty bread alongside for mopping the bowl.

Pro Tips

  • Use good vegetable stock — the stock is the primary liquid of this soup and its quality is directly detectable in the finished result. A weak, watery stock produces a weak, watery soup that the beans and vegetables cannot compensate for. Use a good shop-bought stock (Marigold Swiss bouillon powder is excellent) or homemade; if using shop-bought, taste it before adding and reduce the additional salt accordingly, as many commercial stocks are quite salty.
  • Do not drain the canned tomatoes — the juice in the can is flavorful and adds body to the broth. Add it all.
  • Add the lemon juice off the heat — lemon juice added to a boiling soup loses much of its volatile citrus aroma in the steam; added off the heat and stirred in, it retains the bright, fresh quality that makes it one of the most effective finishing moves in soup-making. Taste immediately after adding and adjust the quantity to your preference.
  • This soup is better on day two — like most bean soups and stews, this one improves enormously after overnight refrigeration. The flavors meld and deepen, the broth thickens further, and the beans absorb more of the herbed broth flavor. Make it the day before for a dinner party and simply reheat gently, adding a splash of stock if it has thickened too much.

The White Bean and the Tuscan Table: A 600-Year History in a Bowl

The white bean — specifically the cannellini, the large, white, kidney-shaped bean that is the defining ingredient of this soup — has a history in Tuscany that is inseparable from the region’s identity, its cuisine, and its reputation for a kind of food that is simultaneously simple and profound. The Tuscans are called mangiafagioli (bean-eaters) by other Italians — a term that was originally slightly derogatory but has become a mark of pride, because the Tuscan tradition of cooking dried beans slowly in terracotta pots in the dying heat of a wood-fired oven, seasoned with nothing more than olive oil, sage, and garlic, produces a dish that is considered among the finest expressions of Italian cucina povera (the cuisine of poverty, which is to say the cuisine of making extraordinary things from inexpensive, plentiful ingredients). The cannellini bean itself is a variety of Phaseolus vulgaris — the common bean native to Central and South America, introduced to Europe by Spanish and Portuguese traders in the early sixteenth century. Before its arrival, the primary legume of the Italian kitchen was the fava bean (Vicia faba), cultivated in the Mediterranean since at least 6000 BCE; within 200 years of the cannellini’s introduction it had so thoroughly integrated into Tuscan cooking that it is now considered an entirely native ingredient. The ribollita — the Florentine bread and bean soup that is the ancestor of this recipe — dates in its recognizable modern form to at least the fifteenth century, though its origins as a peasant dish of re-boiled (ribollita, literally) leftover minestrone poured over stale bread are considerably older. The smash-and-simmer technique in this recipe is the modern equivalent of what Tuscan cooks have always done to thicken their bean soups: not with flour or cream, but with the beans themselves, ground on the inside of the pot with a spoon and stirred back into the broth.


Flavor Variations

  • Tuscan White Bean and Roasted Garlic Soup: Roast a whole head of garlic (top sliced off, drizzled with olive oil, wrapped in foil, roasted at 200°C / 400°F for 40 minutes until completely soft and caramelized) and squeeze the entire head of roasted garlic into the soup alongside the stock and beans in place of raw minced garlic. The roasted garlic is sweeter, deeper, and more rounded than raw garlic and gives the soup a distinctly Tuscan character that is worth the extra 40 minutes of passive roasting time.
  • White Bean and Sun-Dried Tomato Soup with Basil: Add 80g of sun-dried tomatoes packed in oil (roughly chopped) to the soffritto alongside the tomato paste, and replace the leafy greens with a large handful of fresh basil leaves torn in at the very end. The sun-dried tomatoes add a concentrated, slightly sweet, intensely savory tomato depth that fresh or canned tomatoes cannot replicate, and the fresh basil brightens the soup into something closer to a pesto-flavored bean soup than a ribollita-style one.
  • Smoky White Bean and Chorizo-Style Soup: Add 200g of vegan chorizo or spicy vegan sausage (sliced into rounds and seared in the pot before the soffritto, then set aside and returned with the stock) and 1 additional teaspoon of smoked paprika to the spice blend. The smoky, spiced sausage transforms the soup from a Tuscan-style bean soup into something closer to a Spanish fabada asturiana — a completely different, bolder, more assertive character that is equally excellent.

Nutritional Highlights (Per Serving)

CaloriesProteinCarbsFiberFat
~340 kcal16g48g14g9g

Storage

  • Refrigerator: The soup keeps in a sealed container in the refrigerator for up to 5 days and improves significantly after the first 24 hours. Reheat gently over medium-low heat, stirring; add a splash of water or vegetable stock if the soup has thickened to a stew-like consistency during storage (this is normal and expected — the beans continue absorbing liquid).
  • Freezer: Cool completely and freeze in portioned containers for up to 3 months. The beans and broth freeze and thaw very well; the leafy greens become very soft but remain palatable. For the best result, freeze the soup before adding the greens and add fresh greens when reheating. Thaw overnight in the refrigerator and reheat gently on the stove.
  • The soup thickens considerably in storage — this is the starch from the smashed beans continuing to absorb liquid. A stored soup that appears almost solid can be loosened to serving consistency with ¼–½ cup of water or stock stirred in during reheating; it will not have lost any flavor, and the thickened version is excellent served over crusty bread as a ribollita-style dish.
  • Do not freeze with bread added — if serving this as a ribollita (ladled over thick slices of stale crusty bread placed in the bottom of the bowl), freeze the soup separately and add the bread fresh at serving.

Frequently Asked Questions

Can I use dried beans instead of canned?

Yes — dried cannellini beans produce a superior result: they hold their shape better during cooking, absorb the broth’s flavors more completely, and have a creamier, more substantial texture than canned. Soak 350g (12oz) of dried cannellini beans in cold water overnight (or for at least 8 hours), drain and rinse, then cook in unsalted water for 60–90 minutes until just tender before using in place of the canned beans. The cooking liquid from the dried beans (the pot liquor) is flavorful and can be used in place of some of the vegetable stock for an even richer, more bean-forward broth. The total recipe time increases by 1½–2 hours when using dried beans, but the result is noticeably better.

Can I make this in a slow cooker?

Yes — build the soffritto and caramelize the tomato paste on the stove first (this step cannot be done in a slow cooker and is too important to skip), then transfer everything to the slow cooker with the beans, stock, canned tomatoes, herbs, and bay leaves. Cook on low for 6–8 hours or high for 3–4 hours. Apply the smash-and-simmer technique in the last 30 minutes, then add the greens and cook for a further 15 minutes on high. Finish with lemon juice and olive oil as described.

My soup tastes flat — what’s missing?

The most common causes of flat white bean soup are: insufficient soffritto cooking time (the vegetables were not cooked long enough to develop their sweetness — the soffritto must be genuinely soft and beginning to turn golden, not just slightly softened); tomato paste not caramelized (raw tomato paste has a sharp, slightly metallic flavor; caramelized tomato paste is sweet and deep); inadequate salt (taste at every stage and season as you go, not only at the end); and most commonly, the lemon juice was not added. The lemon juice is the most transformative single finishing step in this recipe — a flat, slightly heavy soup becomes bright, coherent, and deeply satisfying the moment the lemon is added and stirred in. If the soup still tastes flat after the lemon, add a tablespoon of nutritional yeast and taste again.

Is this soup the same as ribollita?

This soup is closely related to ribollita but is not identical. Ribollita (literally “re-boiled”) is a Florentine dish that traditionally includes stale or toasted Tuscan bread either stirred into the soup (where it absorbs the broth and thickens it further) or placed in the bottom of the bowl and ladled over. This recipe omits the bread component, making it a white bean minestra rather than a true ribollita, and is lighter in body than the original. To make it more ribollita-style, place thick slices of day-old sourdough or Tuscan bread in the bottom of each bowl before ladling in the soup, allowing the bread to absorb the broth and swell into the bowl.


Tried this recipe? Leave a comment below and let us know how it turned out! Tag us on Instagram and Facebook — we love seeing your plant-powered creations. Looking for more addictive vegan snack and appetizer recipes? Browse all recipes on Easy Vegan Recipes — new recipes posted every single week!