Save My neighbor brought over a thermos of this soup on a particularly gray November afternoon, and I remember being struck by how the kitchen filled with the smell of rosemary and thyme before I even tasted it. That first spoonful—the way the creamy beans caught against the tender ham, how the broth carried all those herb notes without feeling heavy—made me understand why she'd been quietly perfecting it for years. I asked for the recipe that same day, and what started as a favor has become my go-to when the weather turns and I want something that feels both nourishing and celebratory.
I made a massive pot of this for a small dinner party last winter, worried I'd either run short or end up with enough leftovers to feed the neighborhood. What actually happened was my friend Sarah eating three bowls while standing in the kitchen, telling me this was exactly what she needed that week—something warm that didn't require thinking too hard about. That's when I realized this soup has a gift for making people feel seen and cared for.
What's for Dinner Tonight? 🤔
Stop stressing. Get 10 fast recipes that actually work on busy nights.
Free. No spam. Just easy meals.
Ingredients
- Cooked ham, diced (2 cups): The salty, smoky backbone of this whole pot—buy quality ham if you can, and dice it generously so each spoonful gets those meaty pockets.
- Yellow onion, diced (1 medium): This softens into the background and becomes the sweet base note everything else builds on.
- Carrots, peeled and diced (2 medium): They stay tender enough to dissolve slightly but firm enough to give you texture; the color matters too.
- Celery stalks, diced (2): The unsung hero that adds earthiness without announcing itself.
- Garlic, minced (3 cloves): Added after the softer vegetables so it doesn't burn and turn bitter.
- Cannellini beans, drained and rinsed (2 cans, 15 oz each): Their creaminess comes from starches released into the broth, so rinse them but don't skip that step.
- Low-sodium chicken or vegetable broth (6 cups): Low-sodium matters here because the ham brings salt; let the broth be a blank canvas.
- Fresh parsley, chopped (2 tbsp): The brightness that hits you at the end—don't skip this or cook it too early.
- Fresh thyme leaves, chopped (1 tbsp): Earthy and slightly peppery, it anchors the other herbs.
- Fresh rosemary, finely chopped (1 tbsp): A little goes a long way; this is your statement herb.
- Bay leaf (1): Simmered the whole time to deepen everything, then removed before serving.
- Freshly ground black pepper (1/2 tsp): Grind it fresh; pre-ground loses its sharpness.
- Salt (1/2 tsp, adjust to taste): The ham is already salty, so taste before you add more.
- Olive oil (2 tbsp): Good enough to taste but you're not doing anything fancy with it.
Tired of Takeout? 🥡
Get 10 meals you can make faster than delivery arrives. Seriously.
One email. No spam. Unsubscribe anytime.
Instructions
- Start with a warm pot:
- Pour the olive oil into your large soup pot over medium heat and let it shimmer for just a moment. You're looking for that moment when the kitchen starts to smell like the beginning of something good.
- Build your aromatic base:
- Add the diced onion, carrots, and celery all at once and let them sit undisturbed for a minute before stirring. After about 5 to 7 minutes of occasional stirring, they'll soften and become translucent at the edges, releasing their sweetness into the oil.
- Add the garlic:
- Stir in your minced garlic and let it cook for about 1 minute until the smell makes you stop whatever you're doing and notice it. This is the moment you know things are happening.
- Introduce the ham:
- Add your diced ham and stir it around for another 2 minutes or so, just long enough for it to warm through and start sharing its flavor with the vegetables. Don't let anything brown or stick to the bottom of the pot.
- Bring everything together:
- Pour in the drained cannellini beans and the broth, add the bay leaf, salt, and pepper, and give it all a good stir. Make sure nothing is stuck to the bottom and everything is submerged in the liquid.
- Let it simmer:
- Bring the pot to a boil—you'll see the surface get busy and urgent—then immediately turn the heat down to low and let it bubble gently for about 30 minutes. This is when you can step away; the soup is building flavor on its own.
- Finish with fresh herbs:
- Fish out the bay leaf, then stir in your chopped parsley, thyme, and rosemary and let it all simmer together for 2 or 3 more minutes. Taste it now and adjust the salt and pepper to your preference—this is your last chance to make it exactly right.
- Serve warm:
- Ladle it into bowls while it's hot, maybe with a crusty piece of bread nearby and an extra sprinkle of fresh herbs if you're feeling generous.
Save There's something almost meditative about this soup—the way it fills the pot with color and aroma, how it feeds people without fuss or pretense. It became the thing I made whenever someone in my life was going through something hard, because it says everything you can't quite put into words.
Still Scrolling? You'll Love This 👇
Our best 20-minute dinners in one free pack — tried and tested by thousands.
Trusted by 10,000+ home cooks.
When You Want It Creamier
If you're drawn to a thicker, more velvety texture, take a wooden spoon and press some of the cooked beans against the side of the pot during those last few minutes of simmering. They'll break down and release their starches into the broth, turning it silky without requiring cream or anything heavy. I learned this trick by accident and never went back—it gives you richness without that dairy feeling.
Bean Substitutions That Work
Cannellini beans are creamy and mild, which is why they're perfect here, but life doesn't always cooperate with what's in your pantry. Navy beans or Great Northern beans will work just fine—they're smaller and a bit more delicate, but they'll play the same role in the soup. I've also used a mix of leftover beans I had around and it turned into something even more interesting, so don't overthink this part.
Making It Your Own at the Stove
Once you've made this a time or two, it becomes a template instead of a recipe, and that's when the real fun starts. You can add spinach or kale in the last few minutes, switch out the herbs for what you have growing or what speaks to you that day, or add a splash of white wine when the vegetables are softened. Some people add a pinch of red pepper flakes, others finish with a drizzle of good olive oil and fresh lemon zest—treat it like a canvas and see what happens.
- If you don't have fresh herbs, dried ones work in a pinch, but use about a third of the amount because they're more concentrated.
- Leftovers taste even better the next day after everything has had time to get to know each other.
- This freezes beautifully for up to three months, so make a double batch and save yourself an afternoon down the road.
Save This soup has a way of turning an ordinary evening into something that feels intentional and warm. Make it when you need comfort, make it when you want to feed people you love, or make it just because you have an hour and want to fill your kitchen with good smells.
Recipe Help & Answers
- → Can I substitute other beans for cannellini beans?
Yes, navy beans or Great Northern beans work well as alternatives and offer a similar creamy texture.
- → How can I make this dish dairy-free?
Ensure the broth used contains no dairy additives; the recipe is naturally free of dairy ingredients.
- → What herbs enhance the soup’s flavor?
Fresh parsley, thyme, and rosemary provide vibrant, aromatic notes that complement the ham and beans perfectly.
- → Is it possible to thicken the soup?
Mashing some of the beans against the pot before serving adds creaminess and thickens the texture naturally.
- → What is the best way to serve this dish?
Serve hot, garnished with extra fresh herbs and accompanied by rustic bread or a crisp white wine like Sauvignon Blanc.