When the fridge is full of odds and ends and the weather is doing that chilly, gray thing, this hearty vegetable soup is exactly what I want simmering on the stove. It is cozy, flexible, and quietly impressive in the way a good soup always is. You do not need fancy ingredients, just a little patience and, ideally, a generous hand with the garlic.

This version is built for real life: it uses accessible supermarket vegetables, a can or two of beans, and a simple technique that makes it taste like it has been simmering all day, even if you pulled it together after work.
The idea
Why This Recipe Works
- Deep flavor without fuss: I build a savory base by sautéing aromatics and tomato paste before adding broth.
- Hearty and filling: Beans and plenty of vegetables make it a meal, not a starter.
- Flexible: You can swap vegetables based on what you have.
- Great for meal prep: It keeps well and freezes beautifully.
Shopping
Ingredient Notes
Think of this as a blueprint. If you stick to the general structure, you can remix the vegetables all season long.

Core ingredients
- Olive oil for sautéing
- Onion, carrots, and celery for the classic flavor base
- Garlic (I use 4 to 6 cloves, happily)
- Tomato paste to add richness and a lightly caramelized depth
- Diced tomatoes (canned) for body and brightness
- Vegetable broth (or chicken broth if that is what you keep)
- Potatoes or sweet potatoes for heartiness (a 1/2-inch dice cooks reliably)
- Beans like cannellini, great northern, chickpeas, or kidney beans (2 cans yield about 3 cups drained)
- Leafy greens like kale or spinach
- Herbs and seasonings: bay leaf, dried thyme or Italian seasoning, salt, black pepper
Optional, but very welcome
- Parmesan rind for extra savoriness (remove before serving)
- Lemon juice or red wine vinegar to wake everything up at the end
- Crushed red pepper for gentle heat
- Pasta, rice, or barley if you want it even more filling
Get set up
Equipment You Will Need
- Large pot or Dutch oven
- Wooden spoon (or sturdy spoon for stirring)
- Knife and cutting board
- Measuring cups and spoons
- Can opener
Technique
Tips for Getting It Right
- Build the base: Cook the onion, carrots, and celery for 8 to 10 minutes so they soften and smell sweet.
- Do not skip toasting the tomato paste: Stir it constantly for 1 to 2 minutes to deepen flavor.
- Dice potatoes to match the timing: A 1/2-inch dice cooks reliably in the simmer time given.
- Season thoughtfully: Because broth and canned tomatoes vary, start with about 1 teaspoon kosher salt early on, then fine-tune at the end.
- Finish with acid: Right before serving, add 1 to 2 teaspoons lemon juice or 1 teaspoon vinegar so the soup tastes brighter and more finished.
- Keep tender vegetables tender: If adding zucchini, mushrooms, or bell pepper, toss them in during the last 10 minutes so they do not turn mushy.
Flexibility
Substitutes That Work
- Broth: Use vegetable broth, or chicken broth if that is what you keep.
- Potatoes: Swap potatoes for sweet potatoes for a slightly different hearty base.
- Beans: Use cannellini, great northern, chickpeas, or kidney beans, or mix two kinds.
- Greens: Use kale (simmer about 5 minutes) or spinach (wilt in about 1 to 2 minutes).
- Acid finish: Use lemon juice, red wine vinegar, or vinegar to wake it up at the end.
Make it yours
Variations to Try
Favorite vegetable combos
- Classic comfort: carrots, celery, potatoes, green beans, kale, cannellini beans
- Italian-inspired: zucchini, carrots, spinach, kidney beans, a pinch of oregano, finish with Parmesan
- Smoky and hearty: sweet potato, black beans, corn, diced bell pepper, a little smoked paprika
- Clean and bright: leeks, carrots, peas, white beans, spinach, finish with lemon
Add pasta or grains
- Pasta: Stir in 1 to 1 1/2 cups small pasta (like ditalini or small shells) during the last 8 to 10 minutes, stirring occasionally. If you are planning to freeze the soup, cook pasta separately and add to bowls when serving.
- Rice or barley: Add 1/2 cup uncooked rice or barley with the broth and simmer until tender. Barley typically takes 25 to 35 minutes, so you may want to add it a little earlier or plan for a longer simmer.
How to thicken (or lighten)
For a thicker, stew-like soup
- Mash some beans: Smash about 1 cup of beans against the side of the pot, or blend them with a little broth and stir back in.
- Simmer uncovered: Let it bubble gently without the lid for 10 to 15 minutes.
- Add grains: Barley or brown rice will naturally thicken as they cook.
For a lighter, brothy soup
- Add an extra cup of broth or water.
- Go heavier on greens and lighter on potatoes.
On the table
What to Serve It With
I love this soup with something to dip. Any of the following makes it feel like a complete, cozy dinner:
- Crusty bread or garlic bread
- Grilled cheese or a simple toast with olive oil and salt
- A big green salad with a tangy vinaigrette
- Extra toppings: grated Parmesan, chopped parsley, a drizzle of good olive oil, crushed red pepper
Later
Storage, Freezing and Reheating
Make-ahead
This soup tastes even better after a night in the fridge. The flavors meld and the broth turns more savory.
Fridge storage
Cool completely, then store in an airtight container for up to 4 to 5 days (for best quality).
Freezing
Freeze in portions for up to 3 months (for best quality). Thaw overnight in the fridge or gently on the stove.
Freezer note: If you plan to add pasta, cook it separately and add to bowls when serving. Pasta can get overly soft after freezing.
Watch out
Common Mistakes to Avoid
- Not sautéing the aromatics long enough: Give the onions, carrots, and celery the full 8 to 10 minutes so the base tastes savory, not raw.
- Skipping the tomato paste toasting step: Cooking it for 1 to 2 minutes adds a lightly caramelized depth.
- Potato pieces too large: Aim for a 1/2-inch dice so they turn fork-tender within 15 to 20 minutes.
- Overcooking delicate greens: Kale needs about 5 minutes, but spinach wilts fast in about 1 to 2 minutes.
- Forgetting the acid finish: A squeeze of lemon juice or splash of vinegar at the end helps prevent a flat-tasting soup, especially after it sits.
- Freezing soup with pasta already in it: Pasta can get overly soft after freezing; cook it separately if you are planning to freeze.
Questions
Frequently Asked Questions
Why does my vegetable soup taste bland?
It usually needs one or more of these: salt, a little more tomato paste cooked into the base, or acid at the end (lemon juice or vinegar). Also make sure you sauté the onions, carrots, and celery long enough to build flavor. If you are unsure, add salt in small pinches and taste as you go.
Can I make this in a slow cooker?
Yes. For best flavor, sauté the onion, carrots, celery, garlic, and tomato paste first, then transfer to the slow cooker. Add everything except the greens and cook on low 6 to 8 hours or high 3 to 4 hours. Stir in greens during the last 10 to 20 minutes.
Can I make it in an Instant Pot?
Absolutely. Use Sauté for the aromatics and tomato paste. Add broth, tomatoes, potatoes (1/2-inch dice), herbs, and beans. Cook on High Pressure for 8 minutes, then quick release. If your potato pieces are larger, add 1 to 2 minutes. Stir in greens at the end until wilted.
What is the best bean for vegetable soup?
White beans (cannellini or great northern) make the broth creamy and mild. Chickpeas hold their shape nicely. Kidney beans are hearty and classic in tomato-based soups. Use what you like, or mix two kinds.
How do I add more protein?
Add extra beans, stir in cooked lentils, or top each bowl with Greek yogurt or a sprinkle of hemp seeds. If you are not keeping it vegetarian, shredded rotisserie chicken is also wonderful here.
The recipe
Hearty Vegetable Soup
Hearty Vegetable Soup is a cozy, flexible, pantry-friendly soup built on sautéed aromatics and toasted tomato paste, then simmered with tomatoes, broth, potatoes, beans, and greens. Finish with lemon juice or vinegar for a brighter, more finished pot.
Ingredients
- 2 tbsp olive oil
- 1 large onion, diced
- 3 carrots, diced
- 3 celery stalks, diced
- 4 to 6 garlic cloves, minced
- 2 tbsp tomato paste
- 1 (14.5 oz) can diced tomatoes
- 6 cups vegetable broth
- 1 bay leaf
- 1 tsp dried thyme or Italian seasoning
- 2 medium potatoes, diced 1/2-inch (about 3 cups)
- 2 (15 oz) cans beans, rinsed and drained (about 3 cups drained)
- 2 cups chopped kale or 3 to 4 cups spinach
- Salt and black pepper, to taste (start with about 1 tsp kosher salt, then adjust)
- 1 to 2 tsp lemon juice or 1 tsp vinegar, to finish
Instructions
- Heat olive oil in a large pot over medium heat. Add onion, carrots, celery, and a pinch of salt. Cook 8 to 10 minutes.
- Add garlic and cook 30 seconds. Stir in tomato paste and cook 1 to 2 minutes.
- Add diced tomatoes, broth, bay leaf, seasoning, and potatoes. Bring to a boil, then simmer 15 to 20 minutes, until potatoes are tender.
- Stir in beans and greens. Simmer until greens are tender, 5 to 10 minutes total (kale takes longer than spinach).
- Remove bay leaf. Season to taste and finish with lemon juice or vinegar.
Recipe notes
Maya note: If you only do one extra thing, do the lemon juice at the end. It is the tiny step that makes the whole pot taste brighter and more finished.
Nutrition (per serving, approximate)
- Calories: ~230
- Fat: ~6 g
- Carbs: ~35 g
- Protein: ~10 g
- Fiber: ~9 g
- Sugar: ~7 g
- Sodium: ~850 mg
Nutrition values are approximate and will vary based on broth, bean type, and exact produce sizes.