This thick and creamy white bean soup is one of those recipes I keep coming back to for comfort, flavor, and simplicity. It’s vegan, gluten-free, loaded with plant-based protein, and only takes about 25 minutes from start to finish. Made with pantry staples like canned white beans, potatoes, carrots, and rosemary, this cozy bowl of goodness is everything I want in a nourishing, budget-friendly meal.
Why You’ll Love This Recipe
I love how this soup balances hearty texture with rich, savory depth. The soffritto (onion, carrot, and celery base) provides a bold aromatic start, while the rosemary and white wine elevate it with a subtle complexity. It’s affordable, easy to make with basic ingredients, and can be customized in countless ways. Whether I’m curled up on a cold night or need a healthy meal in a hurry, this soup always hits the spot.
Ingredients
(Here’s a tip: Check out the full list of ingredients and measurements in the recipe card below.)
-
2 cans cannellini beans or other white beans, drained
-
1 onion, diced
-
1 celery stalk, diced
-
1 large carrot, diced
-
1-2 garlic cloves, diced or pressed
-
1 cup frozen spinach (optional)
-
2 medium potatoes, peeled and cubed
-
1 tbsp olive oil, plus extra for serving
-
1 tbsp tomato paste
-
1/3 cup white wine
-
1 sprig rosemary (or 1 tbsp chopped fresh / 1/2 tsp dried)
-
2 cups vegetable broth or hot water
-
1/2 tsp paprika (optional)
-
1/2 tsp fine salt (plus more to taste)
-
1/8 tsp black pepper (plus more to taste)
Directions
-
I start by heating olive oil in a large pot over medium heat. Then I sauté the diced onion, carrot, and celery until soft and fragrant—about 5 minutes.
-
Next, I add garlic, white beans, tomato paste, potatoes, rosemary, and paprika. I stir everything together and let the flavors mingle for a minute.
-
I pour in the white wine, stir again, and let it simmer for a minute until it’s mostly evaporated.
-
Then I add the frozen spinach (if using), broth, salt, and pepper. I bring the soup to a gentle boil, then lower the heat, cover, and simmer for 15 minutes or until the potatoes are soft.
-
Once it’s done, I remove the rosemary sprig and adjust seasoning to taste. I like to mash a few beans and potato chunks with a spoon to make it extra creamy.
-
I serve it hot, drizzled with a bit more olive oil and cracked black pepper, with a side of crusty whole grain bread.
Servings and timing
This recipe makes 4 servings and takes about 25 minutes total—5 minutes of prep and 20 minutes of cook time. Each bowl delivers approximately 350 calories, with 19g of protein and 13g of fiber.
Variations
-
Add protein: I sometimes stir in leftover shredded chicken or turkey if I’m not keeping it vegan.
-
Different greens: Kale or Swiss chard work beautifully instead of spinach. Fresh spinach is great too—just add it in the last 5 minutes of cooking.
-
Lower carb: To reduce carbs, I skip the potatoes or use cauliflower instead.
-
No wine? I’ve swapped the wine for a splash of lemon juice at the end, and it still adds a nice brightness.
-
Parmesan topping: When I’m not keeping it vegan, a sprinkle of grated parmesan adds richness and umami.
Storage/Reheating
I store leftover soup in an airtight container in the fridge for up to 4 days. It thickens as it sits, so I usually add a splash of broth or water when reheating. It reheats well on the stovetop or in the microwave.
For longer storage, I freeze portions in airtight containers (leaving a bit of space at the top) for up to 2 months. I thaw it overnight in the fridge or warm gently from frozen on the stovetop.
FAQs
How can I make this soup creamier?
I like to mash a few beans and potato chunks directly in the pot to thicken the soup naturally. For an ultra-creamy texture, blending a portion of the soup and mixing it back in works great too.
Can I make this soup without wine?
Absolutely. I just skip the wine and add a splash of lemon juice at the end for acidity and brightness—it still tastes amazing.
What can I use instead of cannellini beans?
Navy beans or Great Northern beans work just as well. I always use whatever I have in the pantry.
Can I use fresh spinach instead of frozen?
Yes. When I use fresh spinach, I toss it in during the last 5 minutes of cooking. It wilts quickly and adds a nice pop of green.
Is this soup suitable for meal prep?
Definitely. It keeps well in the fridge or freezer and even tastes better the next day. I love making a big batch and portioning it out for lunches.
Conclusion
This white bean soup proves that humble ingredients can make a standout meal. It’s simple, nourishing, and comes together in no time. Whether I want something cozy and comforting or need a fast weeknight dinner, this soup always delivers.
Print
The Best White Bean Soup
- Total Time: 25 minutes
- Yield: 4 servings
- Diet: Vegan
Description
This thick and creamy white bean soup is a quick, comforting, and budget-friendly vegan meal packed with plant-based protein. Made with pantry staples like white beans, potatoes, carrots, and rosemary, it’s ready in just 25 minutes and perfect for cozy nights or healthy lunches.
Ingredients
- 2 cans cannellini or white beans, drained
- 1 onion, diced
- 1 celery stalk, diced
- 1 large carrot, diced
- 1–2 garlic cloves, minced
- 1 cup frozen spinach (optional)
- 2 medium potatoes, peeled and cubed
- 1 tbsp olive oil, plus extra for serving
- 1 tbsp tomato paste
- 1/3 cup white wine
- 1 sprig rosemary (or 1 tbsp chopped fresh / 1/2 tsp dried)
- 2 cups vegetable broth or hot water
- 1/2 tsp paprika (optional)
- 1/2 tsp fine salt, plus more to taste
- 1/8 tsp black pepper, plus more to taste
Instructions
- Heat olive oil in a large pot over medium heat.
- Sauté onion, carrot, and celery for about 5 minutes until softened and fragrant.
- Add garlic, beans, tomato paste, potatoes, rosemary, and paprika. Stir to combine.
- Pour in white wine and simmer for 1 minute until mostly evaporated.
- Add frozen spinach (if using), broth, salt, and pepper. Bring to a gentle boil, then cover and simmer for 15 minutes, or until potatoes are soft.
- Remove rosemary sprig. Mash some beans and potatoes in the pot for a creamier texture.
- Adjust seasoning to taste. Serve hot with a drizzle of olive oil and cracked pepper.
Notes
- Mash some beans and potatoes for creaminess, or blend a portion of the soup.
- Substitute wine with a splash of lemon juice if desired.
- Kale or Swiss chard can replace spinach; add fresh greens in the last 5 minutes.
- To lower carbs, omit potatoes or replace with cauliflower.
- Garnish with parmesan if not vegan for added flavor.
- Prep Time: 5 minutes
- Cook Time: 20 minutes
- Category: Soup
- Method: Stovetop
- Cuisine: Mediterranean-Inspired
Nutrition
- Serving Size: 1 bowl
- Calories: 350
- Sugar: 6g
- Sodium: 580mg
- Fat: 8g
- Saturated Fat: 1g
- Unsaturated Fat: 6g
- Trans Fat: 0g
- Carbohydrates: 54g
- Fiber: 13g
- Protein: 19g
- Cholesterol: 0mg