Save to Pinterest My neighbor Marco showed up at my door one October evening with a bag of fresh Italian sausage from his cousin's butcher shop, insisting I make something proper with it. I had cannellini beans in the pantry and a handful of vegetables that needed using, so we threw together this soup while he told stories about Sunday dinners in Tuscany. What started as a casual weeknight experiment became the dish I make whenever someone needs feeding, comfort, or just a reason to gather around a warm bowl.
I made this for my book club on a rainy Thursday, and people actually stopped talking about their books to focus on their bowls. One friend asked for the recipe before she'd finished her first spoonful, which felt like the highest compliment possible. That's when I realized this wasn't just soup—it was the kind of dish that makes people slow down and actually taste what's in front of them.
Ingredients
- Italian sausage (500 g / 1 lb), casings removed: Browning the sausage first creates a rich, meaty base for the entire soup; use mild if you prefer gentler heat, spicy if your palate likes a kick.
- Yellow onion (1 medium), diced: The foundation of flavor that softens and sweetens as it cooks, creating that deep savory note.
- Carrots (2 medium), diced: Their natural sweetness balances the herbs and adds subtle earthiness to every spoonful.
- Celery stalks (2), diced: Brings a quiet aromatic quality that rounds out the soffritto base.
- Garlic (3 cloves), minced: Added after the softer vegetables so it stays fragrant without burning; don't skip the 1-minute bloom.
- Zucchini (1 medium), diced: Adds body and mild flavor without competing with the sausage and beans.
- Baby spinach (120 g / 4 cups): Stirred in at the very end so it wilts but keeps its bright color and gentle bitterness.
- Canned diced tomatoes (400 g / 14 oz), undrained: Use the whole can juices and all; they're essential for balancing the broth's saltiness.
- Cannellini beans (2 cans, 400 g / 14 oz each), drained and rinsed: Rinsing removes excess starch so the broth stays clear; the beans stay creamy without turning the soup to sludge.
- Low-sodium chicken broth (1.5 liters / 6 cups): Low-sodium lets you control the salt and prevents the soup from becoming a salty puddle by the time you serve it.
- Extra virgin olive oil (2 tbsp): Use good oil; you'll taste it in the finished soup.
- Dried oregano, thyme, rosemary (1 tsp each): These three together create that unmistakable Tuscan flavor; dried herbs work beautifully here because they have time to unfold.
- Crushed red pepper flakes (½ tsp, optional): A whisper of heat that makes people wonder what the secret ingredient is.
- Salt and black pepper: Taste as you go; you'll likely need less salt than you'd expect because the broth, tomatoes, and sausage all contribute.
- Parmesan cheese and fresh parsley (for garnish, optional): The finishing touch that transforms a bowl into something special.
Tired of Takeout? 🥡
Get 10 meals you can make faster than delivery arrives. Seriously.
One email. No spam. Unsubscribe anytime.
Instructions
- Brown the sausage:
- Heat the olive oil in a large pot over medium heat and add the sausage, breaking it apart as it cooks with the back of a wooden spoon until it's no longer pink and the edges are golden brown, about 6 to 8 minutes. If there's a pool of grease, spoon off the excess but leave enough for flavor.
- Build your soffritto base:
- Add the diced onion, carrots, and celery to the pot and let them soften gently for about 5 minutes, stirring occasionally so they release their sweetness without browning. When they're tender enough that a fork goes through them easily, add the minced garlic and cook for exactly 1 minute until the smell becomes almost overwhelming in the best way.
- Add the zucchini and tomatoes:
- Stir in the diced zucchini and let it cook for 2 minutes to soften slightly, then add the canned tomatoes with all their juices along with the oregano, thyme, rosemary, and red pepper flakes if you're using them. Stir everything together and let it cook for 2 more minutes so the herbs release their oils.
- Bring it together:
- Pour in the drained and rinsed cannellini beans and the chicken broth, stirring gently to combine everything evenly. Bring the soup to a boil, then immediately reduce the heat and let it simmer uncovered for 15 minutes so the flavors marry and deepen.
- Finish with spinach:
- Stir in the baby spinach in handfuls and let it wilt for 2 to 3 minutes until it's a soft, dark green and distributed throughout the soup. Taste a spoonful and adjust the salt and pepper until it tastes right to you.
- Serve with love:
- Ladle the soup into bowls, top with freshly grated Parmesan and a sprinkle of chopped fresh parsley if you have them, and serve immediately while it's hot alongside thick slices of crusty bread for soaking up every last bit.
Save to Pinterest There's something almost meditative about standing at the stove while this soup simmers, watching the broth turn from pale to a rich golden amber as the herbs and sausage release everything they have. By the time it hits the bowls, it smells so good that everyone shows up at the kitchen without being called.
Making It Your Own
This soup is a canvas, honestly. I've made it with fennel sausage when that's what I had, swapped spinach for kale or even arugula depending on the season, and once threw in roasted red peppers because I was cleaning out the freezer. The bones of it stay true—sausage, beans, broth, herbs—but the details are flexible enough to bend to what's in your kitchen or what you're craving.
Vegetarian and Dietary Swaps
If you're cooking for vegetarians or just want to go meatless one week, simply omit the sausage and use vegetable broth instead of chicken broth, then add an extra can of cannellini beans or throw in some white beans for the protein and heartiness the sausage would have provided. The soup loses none of its comfort or depth, just shifts into a different kind of cozy. For a gluten-free version, check your sausage and broth labels carefully, as these are the usual culprits hiding gluten.
When You Want It Creamier
Sometimes I'm in the mood for a soup that's thicker and more luxurious, so before I add the broth, I scoop out a handful of the cooked beans and mash them roughly with the back of a wooden spoon, then stir them back in. It creates pockets of creaminess throughout the pot without being heavy or feeling like you're eating bean paste. You can also reserve a bit of the finished soup, blend it smooth, and swirl it back into the pot for an even silkier texture.
- If you mash beans, do it right before adding the broth so they don't dry out.
- A splash of heavy cream stirred in at the end transforms it into something restaurant-worthy but completely optional.
- Some crusty bread rubbed with garlic and broiled until golden becomes a crunchy raft for your soup.
Save to Pinterest This is the kind of soup you make when you want to feel like you're taking care of people, including yourself. Serve it with wine, with bread, with friends gathered around your table on a night that feels like it needs warming.
Recipe FAQs
- → Can I make this soup vegetarian?
Yes, simply omit the Italian sausage and substitute chicken broth with vegetable broth. Adding extra beans can maintain the protein content.
- → What type of beans are used in this dish?
Cannellini beans are used for their creamy texture and mild flavor, which blend well with the sausage and vegetables.
- → How do the herbs contribute to the flavor?
Dried oregano, thyme, and rosemary infuse the broth with traditional Tuscan aromas, enhancing the rustic character of the soup.
- → Can I prepare this soup ahead of time?
Yes, flavors deepen when the soup sits. Store in the refrigerator for up to 3 days and reheat gently before serving.
- → Is this dish suitable for gluten-free diets?
When using gluten-free sausage and broth, the dish can be enjoyed as part of a gluten-free menu.
- → What sides pair well with this soup?
Crusty bread complements the hearty texture, and this soup pairs nicely with light Italian red wines like Chianti or Sangiovese.