Minestrone Soup
Published November 14, 2021 • Updated March 6, 2026
This post may contain affiliate links. See my disclosure policy.
This low carb soup is pure comfort on a chilly day. Instead of kidney beans, I use lupini beans (only 8g net carbs) and simmer a parmesan cheese rind in the broth for that deep, savory flavor you can't get any other way.
I started making this keto minestrone because I missed the big, brothy Italian soups I grew up eating. Regular minestrone is loaded with pasta and kidney beans, so I had to rethink the whole thing. The parmesan cheese rind is what makes this version work. It melts slowly into the broth over 20-plus minutes and gives the soup a savory depth that you’d swear came from simmering all day. I keep a bag of rinds in my freezer specifically for soups like this and my keto beef tomato soup.
The other piece that makes this different from most low carb vegetable soups is the lupini beans. I’ve gotten more questions about these beans than almost any other ingredient on the site. They’re naturally firmer than cannellini or great northern beans, and that’s intentional. They hold their shape through simmering, through reheating, through everything. Cannellini fall apart after a day in the fridge. Lupini don’t. One reader (Rita) told me she’d been making traditional minestrone with cannellini for years and actually prefers this version now. That was a big compliment.
I use cauliflower rice instead of pasta or regular rice, which keeps the carb count down without leaving the soup thin. You barely notice the swap once everything has simmered together. The bacon adds smokiness, but if you want a vegetarian version, swap it for 2 tablespoons of olive oil and use vegetable broth. I’ve done it both ways and the parmesan rind carries enough flavor on its own.
One thing I’ve learned from making this dozens of times: don’t add the spinach until the very end. It wilts in about 30 seconds and overcooking it turns the whole pot a muddy green. Same goes for freezing. If you’re meal prepping, leave the spinach out of the batch you’re freezing and stir in fresh leaves when you reheat. The soup itself freezes well for up to 3 months.
If you’re into keto soups, this pairs well with a rotation. I cycle through this, my keto chicken and rice soup, keto turkey soup, and keto cheeseburger soup depending on the week. This one is my go-to when I want something lighter but still filling.
Explore hundreds of keto recipe videos with step-by-step instructions, tips, and tricks to make keto easy.
Ingredients
2 slices bacon, diced or 2 tablespoons olive oil
1/2 cup diced onions
1/2 cup diced carrots
3 stalk celery, diced
2 medium zucchini, diced
28 oz can whole tomatoes
4 cup chicken broth, vegetable broth or water
1 parmesan cheese rind, about 1x4”
1 cup cauliflower rice
1 cup lupini beans
3 cups spinach leaves
Step by Step Instructions
Step by Step Instructions
Cook bacon
Add bacon to a large stock pot or Dutch oven. Cook over medium-high heat until cooked but not crispy.
Add some vegetables
Add diced onions, carrots and celery to the pot and continue cooking until almost tender.
Simmer with cheese rind
Add chicken broth or vegetable broth, 1 teaspoon salt, zucchini, tomatoes and parmesan rind. Bring to boil, then reduce heat to a simmer. Let cook uncovered until vegetables are tender (at least 20 minutes).
Add rice and beans
Add cauliflower rice, lupini beans and cook for 5 minutes.
Add spinach
Stir in spinach leaves and add salt & pepper for taste. Stir until spinach has wilted into the soup. Remove rind and serve.
Nutrition disclaimer
The nutrition information provided is an estimate and is for informational purposes only. I am a Doctor of Pharmacy (Pharm.D.); however, this content is not intended to be a substitute for professional medical advice, diagnosis, or treatment. Always consult your physician or other qualified health provider before making any lifestyle changes or beginning a new nutrition program.
Your Macros. Your Recipes. Calculated in 60 Seconds.
Get personalized keto macros and instantly see which recipes fit your targets. No more guessing what to eat.
Get My Macros + Recipes →Frequently Asked Questions
Do lupini beans need to be peeled before adding to the soup?
I don't peel mine. The ones I buy (jarred) come ready to use. Some brands sell them with the outer casing still on, so if yours look like they have a thick skin, just pinch it off. But in this recipe, I toss them in straight from the jar.
Can I make this in the Instant Pot?
I haven't tested this one in the Instant Pot specifically, but the method would be straightforward. Saute the bacon and vegetables using the saute function, then add everything except the spinach, cauliflower rice, and lupini beans. Pressure cook on high for 8 minutes with a quick release. Stir in the cauliflower rice, lupini beans, and spinach at the end using the saute function for 5 minutes.
Why are my lupini beans still firm after cooking?
I've answered this one a lot. Lupini beans are naturally firmer than regular soup beans, and that's how they're supposed to be. They won't turn soft and creamy like cannellini. I actually prefer the texture because they hold up through reheating without falling apart. If you want them a bit softer, simmer longer or try them from the freezer the next day. I've noticed frozen leftovers have noticeably softer beans.
Can I make this minestrone vegetarian?
I've made it both ways. Swap the bacon for 2 tablespoons of olive oil and use vegetable broth instead of chicken broth. The parmesan rind does most of the heavy flavor work, so you won't miss the bacon as much as you'd think. Keep in mind parmesan isn't technically vegetarian (it uses animal rennet), so if that matters, use a vegetarian hard cheese.
How do I store and freeze leftover minestrone?
I store mine in the fridge for up to 5 days. For freezing, I leave the spinach out of whatever portion I'm freezing and stir in fresh spinach when I reheat. The soup freezes well for up to 3 months. Leave room in the container for expansion.
How do I reheat frozen minestrone without it getting mushy?
I thaw mine overnight in the fridge, then reheat on the stovetop over medium heat. The vegetables hold up well since they were firm when frozen. Add a splash of broth if it's thickened. The lupini beans actually get softer after freezing and thawing, which I think improves them.
Can I add more vegetables to this recipe?
I've had readers add bell peppers, green beans, and even radishes. Orange and yellow bell peppers work well since they're lower carb and add color. Green beans are great if you toss them in with the zucchini. One reader tried radishes and I was curious how they'd hold up. Just adjust cooking time so everything gets tender, and keep an eye on your carb count if you're adding higher-carb vegetables.
Had a parmesan rind sitting in my freezer for months. Finally found a use for it.
Brooke, I buy the rinds separately from the cheese counter now. This soup is why.
Didn't know you could buy just the rind. Checking the cheese counter next time I'm at the store.
this one's become a weekly staple in my house. obsessed.
I make this on rotation from October through March pretty much without fail. The rind is the part people always ask me about when I tell them what's in it. I keep a bag of parmigiano rinds in the freezer specifically for this soup and for the butternut squash one. If you haven't tried swapping in fire-roasted tomatoes yet, do it once. The broth tastes completely different.
Dutch oven on for the first time for real from-scratch soup and this was the pick. Broth builds faster than I expected, bacon base and parmesan rind carry the depth. Lupini beans were new to me, wasn't sure I'd grabbed the right thing at the store, but they hold up the whole simmer. One thing: season as you go. I adjusted too late and it showed.
Season as you go with this one because the rind is still working 30 minutes in. I usually don't salt at all until the last 10 minutes and adjust from there. Taylor, a from-scratch Dutch oven soup for a first run is kind of a lot, and it came out right.
Batch five and the zucchini thing still gets me. It just breaks down into the broth with no thickener and the soup has actual body. Thought I was missing a step every time.
The zucchini just falls apart and thickens the broth as it goes. The rind helps too. I've never put a thickener in this one.
There's a chew to the lupini beans that holds through the full simmer, and in a soup where the zucchini and carrots have softened way down, that texture is the thing you keep reaching for. The depth from the bacon fat and the rind isn't something you get any other way. Honest note for next time: 5 minutes for the cauliflower rice is slightly too long (mine came out soft, almost dissolved into the broth by the time I was ladling), so I'd pull it at 3. Still making this on repeat.
3 minutes is probably right if your cauliflower rice is finely cut or you're using store-bought frozen. Mine runs coarser so it holds a little longer, but the fine stuff absolutely dissolves. I'll add a note.
Mine was the frozen kind, so yeah. Three minutes next time.
fire-roasted tomatoes instead of regular. won't go back.
Brought this to a Sunday dinner and one of my friends kept insisting the broth tasted like something from a trattoria (she wouldn't let it go). I told her it was the parmesan rind and she looked at me like I was lying. Would've been five stars but I needed more salt than the recipe calls for.
That trattoria reaction is the whole point of the rind. Salt-wise, I write recipes lighter than I actually season (easier to add than undo). Taste it toward the end and keep going.
Made this on a rainy evening last week and my partner, who usually picks around anything that looks like a bean, ate the lupini beans without question (I only told him after). The parmesan rind thing is real - the broth had this depth I don't usually get from scratch. Would add more carrots next time to balance the tomato.
The lupini bean thing gets people every time. They look enough like cannellini that no one questions it. And yes, more carrots - I'd go up to 3/4 cup and add them in with the onions so they have time to soften all the way through.
Minestrone was the first thing I gave up when I went keto and I kind of accepted I just wouldn't have it anymore. The lupini beans and that parmesan rind simmering in the broth... it's actually the soup I remembered.
That's what I wanted to hear. Lupini beans hold up where cannellini would've turned to mush by serving time.
Made this twice now and I'm obsessed with the parmesan rind trick, but I keep second-guessing when to pull it out. Does it matter if it simmers the full time or does it get bitter if it goes too long?
Leave it in the whole time. Parmesan rind doesn't go bitter, it just keeps building. I've forgotten mine was in there and let it go way past the timer and the broth only got deeper.
Third time making this in the last two months and the parmesan rind is not optional, I've learned. Made a batch without it once (couldn't find one at the store) and it just wasn't the same. The broth goes from good to actually something special when that rind's been in there. Keeping one in the freezer now specifically for this.
Same. I've had a bag in the freezer for probably two years, just keep adding to it whenever I finish a wedge of parmesan. Works perfectly for this.
So I picked up all the ingredients this weekend and I'm completely stumped on the parmesan rind thing. Never used one before. Didn't even know that was a thing you could cook with. Do you have to save them up gradually from wedges you go through, or can you actually buy just the rind at a grocery store? I got a wedge of parmesan but I'm guessing you can't just throw in a chunk of the actual cheese since it would disintegrate. And if I can't track one down in time, is the soup still worth making without it, or is the rind literally what makes the broth taste that way? Been doing keto for about a month and soup is what keeps me on track, so I really want to nail this.
Most grocery stores sell the rinds separately at the cheese counter, usually really cheap. A chunk of actual parmesan won't do the same thing (it melts into the broth and you lose all that depth). Without the rind the soup is still good, just tastes more like a basic vegetable soup.
My husband has been dairy-free for about a year and he loves minestrone, so I really want to nail this for him. The parmesan rind is what I keep coming back to. It sounds like it's doing most of the heavy lifting on flavor, and if I skip it I'm worried the whole broth will just taste flat and watery. I've seen people mention nutritional yeast as a dairy-free swap but I honestly don't know if that survives a long simmer without turning weird. The bacon is already there so there's some savory base, but I don't know if that's enough to make up for it. Is there something that actually replicates what the rind does or is the dairy-free version going to be a totally different soup?
Nutritional yeast survives a long simmer just fine. Add 2 tablespoons with the broth. Between that and the bacon already in there, the broth won't go flat.
The parmesan rind is such a specific thing to add and I can't believe how much it changes the broth, it actually tastes like the minestrone my mom used to make. Thought I was giving this up forever when I went keto. Four stars only because I'm still warming up to lupini beans but this broth has me coming back.
The rind is the whole broth. And the lupini thing usually clicks after the second bowl once you stop expecting them to be cannellini.
Made this Sunday and my 10-year-old spent the first five minutes picking out lupini beans and interrogating me about what they were. He's suspicious of anything that doesn't look like normal food, so when he got quiet halfway through the bowl and just kept eating I knew we had something. That parmesan rind in the broth is not a trick, the richness is real. Already planning a double batch.
Quiet eating from a skeptical 10-year-old beats any five-star review. The lupini interrogation is basically a rite of passage at this point.