Save There's something about a pot of ham and bean soup that fills a kitchen with the kind of warmth that has nothing to do with the stove. I discovered this recipe on a chilly afternoon when I had leftover ham from Sunday dinner and a craving for something that felt both substantial and gentle. The first time I made it, my neighbor stopped by just as the herbs hit the broth, and the aroma was so inviting that she asked for the recipe before even tasting a spoonful.
I made this soup for my sister during her first week in a new apartment, when her kitchen was still mostly boxes. She sat at my counter, and as we talked about her move, the soup simmered quietly in the background like a comfortable companion. By the time we ladled it into bowls, it had become the kind of meal that marks a moment, something she still mentions when we talk about settling into new spaces.
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): Use leftover ham from a holiday or Sunday dinner, or ask your butcher for a thick cut that you can cube yourself—it brings a salty, smoky backbone that bouillon could never touch.
- Yellow onion, diced (1 medium): This is where the soup's sweetness begins, so take a moment to chop it fine and let it soften fully before moving forward.
- Carrots, peeled and diced (2 medium): They soften into the broth and add a gentle sweetness, plus that bit of color that makes people smile when they see the bowl.
- Celery stalks, diced (2): The holy trinity wouldn't be complete without this; it adds depth that's quiet but absolutely necessary.
- Garlic, minced (3 cloves): Mince it fresh and add it quickly after the onions soften—that moment when it hits the hot pan and releases its aroma is pure magic.
- Cannellini beans, drained and rinsed (2 cans, 15 oz each): Rinsing them matters more than you'd think; it removes the starchy liquid and leaves you with beans that stay tender, not mushy.
- Low-sodium chicken or vegetable broth (6 cups): Go with what feels right, but low-sodium means you control the seasoning and won't end up with something oversalted by afternoon.
- Fresh parsley, chopped (2 tbsp): Add this at the end to keep it bright and alive; cooking it too long turns it into an afterthought.
- Fresh thyme leaves, chopped (1 tbsp): Strip the leaves from the stems yourself if you can—there's a difference between that and the pre-chopped kind.
- Fresh rosemary, finely chopped (1 tbsp): This is the herb that makes people ask what you did differently; be generous but respect its strength.
- Bay leaf (1): Don't forget to fish this out before serving—I learned that lesson the hard way, and so did a guest once.
- Freshly ground black pepper (1/2 tsp): Ground fresh tastes nothing like the pre-ground kind, and it makes a noticeable difference in something this simple.
- Salt (1/2 tsp, adjust to taste): Start with half a teaspoon and taste as you go; the ham brings its own saltiness, so you might need less than you expect.
- Olive oil (2 tbsp): Use something you'd actually eat off a piece of bread—good olive oil makes every step taste better.
Tired of Takeout? 🥡
Get 10 meals you can make faster than delivery arrives. Seriously.
One email. No spam. Unsubscribe anytime.
Instructions
- Get your pot ready:
- Heat the olive oil in a large soup pot over medium heat for about a minute, until it moves easily around the pan and shimmers slightly.
- Build the flavor base:
- Add the onion, carrots, and celery together and let them sauté for five to seven minutes, stirring occasionally, until they begin to soften and the onion turns translucent. You'll know it's ready when the kitchen smells warm and vegetal, not sharp.
- Welcome the garlic:
- Stir in the minced garlic and cook for exactly one minute—this is enough time for it to release its aroma without burning, which would turn it bitter.
- Introduce the ham:
- Add the diced ham and stir it into the vegetables for about two minutes, letting it warm through and start to give up its flavor to the pot.
- Bring everything together:
- Add the drained cannellini beans, broth, bay leaf, salt, and pepper all at once, stirring gently to combine without breaking up the beans.
- Let it simmer:
- Bring the soup to a boil first—you'll see big bubbles breaking the surface—then reduce the heat to low and let it simmer gently, uncovered, for thirty minutes. This is when you can step back; the soup knows what to do.
- Finish with herbs:
- Remove the bay leaf with a spoon or your fingers, then stir in the fresh parsley, thyme, and rosemary, letting them infuse for two to three minutes so they stay vibrant and alive in the bowl.
- Taste and serve:
- Have a spoonful and adjust the seasoning if it needs more salt or pepper, then ladle it into bowls while it's still steaming.
Save This soup has become the thing I make when I want to say something without words—when a friend is recovering from surgery, when someone's had a rough week, or when I simply want to remind someone that they're thought of. It's humble enough to not feel like too much, but complete enough that it feels like care.
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 Texture Matters
The beauty of this soup lives in its texture, and you have choices. Most of the time I leave it as is, with the beans whole and tender, because there's something satisfying about them staying distinct in each spoonful. But if you prefer something creamier, you can take a wooden spoon and gently mash a handful of beans against the side of the pot once the soup has finished simmering—this releases the beans' starch into the broth and creates a naturally creamy consistency without any cream at all. It's a small move that completely changes the experience.
Variations That Work
Once you understand the foundation of this recipe, it becomes a canvas for what you have on hand or what you're craving. Navy beans or Great Northern beans work beautifully in place of cannellini if that's what's in your pantry, and they'll cook at the same rate. Some winters I add a handful of diced zucchini or a splash of white wine, and other times I let it stay pure and simple. The herbs are flexible too—if you have fresh sage instead of thyme, it works; if rosemary feels too strong some evening, use less. The soup bends to your preferences without losing its soul.
Serving and Keeping
This soup tastes even better the next day, when all the flavors have had time to know each other. I usually make it in the morning and reheat it gently in the evening, which gives the day a sense of rhythm. It keeps beautifully in the refrigerator for up to five days, and it freezes well for up to three months if you want to have it on hand for moments when cooking feels like too much. When you reheat it, taste again and adjust the seasonings, since flavors settle differently once the soup has cooled.
- Serve it with crusty bread for soaking up every last bit of broth.
- A crisp white wine like Sauvignon Blanc beside the bowl lifts the ham and herbs in unexpected ways.
- Fresh herbs scattered on top at the last moment remind everyone why you took the time to make this.
Save There's comfort in knowing how to make something this good, something that asks so little of you but gives back so much. This soup has become the recipe I reach for when I want to feed people the way I wish someone would feed me.