
The Potatoes Sat in Cold Water for Twenty Minutes
I forgot I’d already cubed them. By the time I remembered, they’d gone slightly waterlogged and took longer to soften than they should have.
That’s how this soup started — not with intention, but with a pot already on the stove and a counter covered in vegetable scraps.
Minestrone is one of those soups that looks forgiving on paper. And mostly it is. But it has opinions about order and timing, and it will let you know when you’ve gotten either wrong.
I’d made versions of this before — vague, watery things with too much broth and not enough going on. This time I wanted something that actually tasted like the vegetables in it.
About the Sauté, Which Most People Rush
Most recipes tell you to sauté the onion, garlic, carrot, and celery for “a few minutes.” They mean it casually. They’re wrong to.
Five full minutes over medium heat, stirring every 90 seconds or so, is the difference between a broth that tastes like something and one that doesn’t. The onion should go translucent and slightly sticky. The garlic should smell toasted, not raw.
I thought about adding a pinch of smoked paprika at this stage — actually no, I skipped it. It pulls the flavor somewhere Spanish and this soup didn’t want that.
The celery will always look underdone to you. It won’t be. Leave it.
Quick tip: If your garlic starts to brown before the onion is soft, your heat is too high. Pull it back and add a small splash of water to slow it down.
The Zucchini Goes Soft. That’s Fine.
I’ve seen recipes that tell you to add zucchini at the very end so it stays firm. For this soup, I disagree.
Zucchini that’s cooked through and slightly yielding absorbs the broth in a way that firm zucchini doesn’t. You want it soft enough that it gives when you press it with the back of a spoon, but not so far gone that it’s disappeared into the broth entirely.
Three minutes with the potatoes before the liquid goes in. That’s the window.
My neighbor Diane insists on adding a Parmesan rind to the broth while it simmers. I tried it once and honestly couldn’t tell the difference in the finished soup. I didn’t tell her that.
The potatoes, for what it’s worth, took closer to 25 minutes to get fully tender on my stove — not the 20 the recipe suggests. Poke them. Don’t trust the clock alone.

Broth, Tomatoes, Then Leave It Alone
Pour the tomatoes in first, let them hit the hot bottom of the pot for about 30 seconds before you add the broth. Something happens in that half-minute — a slight deepening in the tomato flavor that you’ll notice in the finished soup.
Then the broth. Then the Italian seasoning and red pepper flakes. Stir once, bring it to a boil, and step away.
The simmer is 20 minutes and it genuinely needs them. I got impatient at 15 and tasted it — the potatoes were still chalky in the center and the broth tasted thin. I put the lid back on.
Don’t stir constantly. Soup isn’t risotto.
The beans go in at the very end, and they only need 5 minutes. They’re already cooked. You’re warming them through and letting them take on a little of the broth,
not softening them from scratch. There’s a difference and it matters to the texture.
What It Looked Like When It Was Done
Thick. Thicker than I expected, actually — the potatoes had given off a lot of starch, which pulled the broth toward something closer to a stew in texture.
Not a bad thing. But worth knowing.
If you want it brothier, add another half cup of liquid near the end. If you want it closer to what mine was — spoonable, almost dense — leave it.
The parsley went in at the very end, off heat. I chopped it fine and used the full quarter cup, which felt like a lot until I tasted it. Then it felt right.
Parmesan on top, not stirred in. It melts in unevenly when stirred, and the little salty pockets you get from keeping it on top are worth more than uniformity.
The bread was good. Dense, slightly chewy. Soaked up the broth at the bottom of the bowl without going immediately to mush — that’s the test.

A Note on Salt, Which I Keep Getting Wrong
The first time I made this exact version, I under-salted the broth and tried to fix it at the table. It never fully recovered — salt added at the end sits on top of food, it doesn’t get inside it.
Season the broth once it’s boiling and again after the beans go in. Those are the two moments. Not before, not only at the end.
My palate isn’t calibrated for broth salt the way it is for, say, pasta water. I overseasoned it twice trying to correct the first undercook. I served it anyway.
Curious whether anyone else has a reliable internal meter for soup salt, or if it’s always a guessing game until you taste it three times.
—How to Make Classic Minestrone Soup
Step 1: Heat 2 tablespoons of olive oil in a large, heavy-bottomed pot over medium heat. You want the oil shimmering but not smoking — if it starts to look glassy and hazy rather than clear, it’s ready. Don’t rush this part.
Step 2: Add the diced onion, minced garlic, carrots, and celery. Sauté for 5 minutes, stirring every minute or so. (The garlic will smell done before the vegetables are — keep going until the onion is actually soft, not just warmed.) I always do this step longer than I think I need to, and it always pays off.
Step 3: Add the cubed potatoes and diced zucchini. Stir to coat them in the oil and cook for 3 minutes. They won’t soften here — you’re just getting them started and giving them a little color on the outside.
Step 4: Pour in the canned diced tomatoes with all their juice. Let them sit on the hot pan bottom for about 30 seconds before you stir. Then add the 6 cups of broth and stir everything together.
Step 5: Add the Italian seasoning and red pepper flakes. Stir well. Bring the pot to a boil over medium-high heat, then reduce to a steady simmer. Did your soup come to a boil faster than expected? The timing on the simmer still matters — don’t shorten it. Share below!
Step 6: Simmer uncovered for 20 minutes. The vegetables should be fork-tender and the broth should taste like more than just seasoned water by now. If your potatoes are still firm at 20 minutes, give it another 5.
Step 7: Stir in the drained and rinsed white beans. Cook for 5 more minutes. Don’t boil it hard at this stage — a gentle simmer keeps the beans intact.
Step 8: Taste. Season with salt and pepper. Taste again. Remove from heat and stir in the fresh parsley.
Step 9: Ladle into bowls. Top with grated Parmesan — not stirred in, just laid on top. Serve hot with crusty bread alongside.
Ways to Change It Up
Try this: Add a handful of small pasta — ditalini or elbow — in the last 10 minutes of simmering. It thickens the soup considerably and makes it more of a full meal. Just watch it; pasta absorbs a lot of broth as it sits, so leftovers will need extra liquid.
Try this: Swap the white beans for chickpeas and add a teaspoon of cumin with the Italian seasoning. It’s a different direction entirely — earthier, slightly smoky — but it works.
Try this: Add two large handfuls of chopped kale or cavolo nero in the last 8 minutes. It wilts but holds its shape better than spinach, and it doesn’t turn the broth green.
Which would you go for? Drop it in the comments.
How to Serve It
With a thick slice of bread that can actually hold up to the broth — sourdough or a dense Italian loaf, not anything too airy. The bread is functional here, not decorative.
A small green salad alongside if you want something fresh to cut through the heaviness. Something with a sharp dressing — a lemony vinaigrette, not a creamy one.
For a full dinner, serve in wide shallow bowls so the Parmesan on top doesn’t sink immediately. It looks better and it eats better — the cheese stays on the surface long enough for people to notice it.
What would you pair it with?
—Storing It Without Ruining It
Fridge: up to 4 days in a covered container. The soup thickens significantly overnight as the potatoes and beans continue to absorb liquid.
When you reheat it, add a splash of broth or water — probably more than you think. It won’t taste thin; it’ll taste like it did the first day.
Freezer: works well, but freeze it before you add the parsley and Parmesan. Both go strange after freezing. Add them fresh when you reheat. Up to 3 months frozen, though the texture of the zucchini gets a little soft after that long.
Reheat on the stove over medium-low, stirring occasionally. The microwave works but tends to heat the beans unevenly — some will be scalding and some still cold. Stove is better.
Have you ever saved leftovers like this? Tell me below!
Mistakes I Made So You Don’t Have To
I once added the beans at the beginning — thinking they’d get more flavor if they cooked longer — and by the time the soup was done, half of them had dissolved into the broth. Not terrible, but not what I wanted. The soup became oddly cloudy.
I skipped rinsing the canned beans one time because I was in a hurry. The broth went slightly gluey and had a faint metallic edge. Rinse the beans. It takes 20 seconds.
I used low-sodium broth without adjusting the seasoning accordingly, assumed it would be fine, and served a bowl of soup that tasted like hot vegetable water with good intentions. The fix was obvious in hindsight.
Did something like this happen to you?
Questions I Actually Get About This Soup
Can I use chicken broth instead of vegetable broth? Yes, and it adds a slightly richer base. I’ve used both, and the vegetable broth keeps the flavors cleaner — each vegetable stays distinct. Chicken broth pulls everything toward one note. It depends on what you’re after.
Do I need to peel the potatoes? No. The skin holds up well in soup and saves you 5 minutes. I don’t peel them. And nobody eating this soup has ever complained.
Can I make this in a slow cooker? It depends. The sauté step at the beginning doesn’t translate to a slow cooker, and skipping it produces a noticeably flatter result. If you do use a slow cooker, sauté the onion, garlic, carrot, and celery first on the stove, then transfer everything. Cook on low for about 6 hours. Add beans in the last 30 minutes.
Is it supposed to be this thick? It gets thicker as it sits. Fresh off the stove it may look about right; the next day it will look like a stew. Both are correct. Add broth when reheating and it loosens back up in about 4 minutes over medium heat.
Can I add pasta to this? Yes, but cook it separately and add it per bowl, not directly into the pot. Pasta cooked in the soup absorbs the broth as it sits and will turn the leftovers into a solid block. I tried to skip this step once. The soup was essentially a casserole by morning.
What if I don’t have Italian seasoning? Use dried oregano and dried thyme, roughly half a teaspoon each. That’s most of what Italian seasoning is anyway. But if you have fresh thyme, use that instead — about 4 sprigs in the broth, pulled out before serving.
Which answer helped you most?
After You’ve Made It Once
The soup is better the next day. Not slightly — noticeably. The broth absorbs more of the vegetable flavor overnight and the seasoning settles in a way it doesn’t when fresh.
I made this on a Tuesday and thought it was fine. Wednesday it was better. That’s not a cooking tip, it’s just how minestrone behaves.
The vegetables you use matter more than the proportions. A watery zucchini or a starchy old potato will make themselves known. This isn’t a soup that hides the quality of what you put in it.
Fun fact: White beans — also called cannellini — have been cultivated in central Italy since at least the 16th century, when they were brought from the Americas and quickly adopted into traditional Italian cooking as a protein staple.
Will you make this soon?
I’m still not sure I’ve gotten the salt exactly right. Every time I make it I adjust, and every time it’s slightly different depending on the broth brand. I’ve stopped trying to nail it in advance and just taste it three times before serving.
Happy cooking! —Marina Caldwell
Classic Minestrone Soup Fresh Vegetable Recipe

Ingredients
- 2 tablespoons olive oil
- 1 medium onion, diced
- 3 cloves garlic, minced
- 2 medium carrots, diced
- 2 celery stalks, diced
- 2 medium potatoes, cubed
- 1 zucchini, diced
- 1 can (14.5 oz) diced tomatoes
- 1 can (15 oz) white beans, drained and rinsed
- 6 cups vegetable or chicken broth
- 1 teaspoon dried Italian seasoning
- 1/2 teaspoon red pepper flakes
- Salt and pepper to taste
- 1/4 cup fresh parsley, chopped
- 2 tablespoons grated Parmesan cheese
- 1 loaf crusty bread, sliced
Instructions
- 1Heat olive oil in a large pot over medium heat.
- 2Add diced onion, garlic, carrots, and celery. Sauté for 5 minutes until softened.
- 3Add cubed potatoes and diced zucchini. Cook for 3 minutes, stirring occasionally.
- 4Pour in diced tomatoes with their juice and vegetable broth.
- 5Add Italian seasoning and red pepper flakes. Stir well.
- 6Bring soup to a boil, then reduce heat and simmer for 20 minutes until vegetables are tender.
- 7Stir in white beans and cook for 5 more minutes.
- 8Season with salt and pepper to taste.
- 9Ladle soup into bowls and garnish with fresh parsley and Parmesan cheese.
- 10Serve hot with sliced crusty bread on the side.
Notes
See full recipe for nutritional information.






