I’ve been creating and sharing recipes for over a decade, but this Creamy Ham and Potato Soup? It’s personal. I grew up eating versions of this after every holiday ham, and now I make it for my own three kids with leftover ham from Easter, Christmas or anytime I want cozy comfort. It’s the kind of soup that tastes like it simmered all day, but comes together fast with simple, everyday ingredients. Creamy, comforting, and picky-eater approved!

What makes my Ham and Potato Soup a little different (and probably better)
Here’s the thing: I’m not reinventing soup here. I’m just doing it right, in my ever so humble opinion. A few little tweaks that make a big difference:
- I use both a quick roux and a little cornstarch—because the roux gives the soup that delicious depth and silky body, while the cornstarch lets me adjust the thickness just right at the end. Bonus: it also helps stabilize the dairy so nothing curdles or goes grainy.
- Speaking of dairy—mine goes in last on a low simmer for a few minutes. We’re not boiling milk and cream around here. That’s how you end up with sad, broken soup. We want creamy and smooth, not weird and clumpy.
- I also add a splash of Dijon mustard—not enough to scream “mustard!” but just enough to give you that “What IS that?!” savory magic.
At our house, we serve this with crusty bread or homemade biscuits and call it dinner—nothing fancy, just cozy and real. My husband loves it with extra pepper, the kids dunk their bread in it like it’s a sport, and I always sneak the leftovers for lunch the next day (chef’s privilege).
What I’m throwing in my Dutch oven
This Ham and Potato Soup is made with simple, cozy ingredients—think potatoes, ham, onion, carrot, celery, garlic. I use Yukon Golds for their creamy texture and flavor, and cooked ham (leftovers or store-bought, both work great). If I have a ham bone, it goes in for extra richness, but it’s optional.
Where this soup really gets good is in the texture. I build a quick roux with butter and flour to add flavor and body, then finish it off with a little cornstarch whisked into milk and cream for extra creaminess and stability.
Speaking of dairy, the milk and cream go in at the end—always!—because we’re not about to boil them for 30mins and ruin that silky texture. And yes, we’re stirring in cheddar, because a little cheese makes this whole thing extra cozy!
Printable recipe
Creamy Ham and Potato Soup
Ingredients
- 1 tablespoon butter
- 1 tablespoon olive oil
- 1 small yellow onion (diced (about ¾ cup))
- 1 medium carrot (peeled and diced (about ½ cup))
- 1 rib celery (diced (about ½ cup))
- 2 cloves garlic (minced)
- 1 tablespoon all-purpose flour
- 4 cups low sodium chicken broth
- 3 cups peeled and diced Yukon Gold potatoes (about 4 medium potatoes / 1¼ lbs before peeling)
- 2 cups cooked ham (diced or shredded)
- 1 ham bone or ham hock (optional, for extra flavor)
- 1 teaspoon Dijon mustard (optional, adds savory depth)
- ½ teaspoon dried thyme
To finish the soup:
- 1 cup whole milk
- ½ cup heavy cream or half-and-half
- 1-2 tablespoons cornstarch (whisked into the milk and cream)
- salt & pepper (to taste)
- ¾ cup shredded cheddar cheese
- chopped fresh parsley (for garnish (optional))
Instructions
- Sauté vegetables: In a large pot or Dutch oven, heat butter and olive oil over medium heat. Add onion, carrot, and celery. Sauté for 4–5 minutes, until softened. Stir in garlic and cook 30 seconds.1 tablespoon butter, 1 tablespoon olive oil, 1 small yellow onion, 1 medium carrot, 1 rib celery, 2 cloves garlic
- Make the roux : Sprinkle flour over vegetables and stir well. Cook for 1–2 minutes, stirring constantly.1 tablespoon all-purpose flour
- Simmer the soup: Stir in broth until smooth. Add potatoes, ham, optional ham bone, Dijon, and thyme. Stir well, bring to a boil, then reduce to a simmer. Cover and cook for 15–20 minutes, until potatoes are fork-tender.4 cups low sodium chicken broth, 3 cups peeled and diced Yukon Gold potatoes, 2 cups cooked ham, 1 ham bone or ham hock, 1 teaspoon Dijon mustard, ½ teaspoon dried thyme
- Thicken with dairy mixture: Reduce heat to low. In a bowl or measuring cup, whisk milk, cream, and cornstarch until smooth. Remove ham bone (if using) from the pot and discard. Slowly pour the milk mixture into the soup, stirring constantly. Simmer on low for another 5–7 minutes, until the soup thickens slightly.1 cup whole milk, ½ cup heavy cream or half-and-half, 1-2 tablespoons cornstarch, salt & pepper
- Add cheese and season : Take off the heat. Stir in shredded cheddar until melted and smooth. Season to taste with salt and pepper.¾ cup shredded cheddar cheese
- Serve: Ladle into bowls, garnish with chopped parsley if desired, and serve hot with crusty bread.chopped fresh parsley
FAQ & Fix-It Zone (aka the things I know you’re going to ask)
Can I use leftover ham from Easter/Christmas/a random Tuesday night spiral ham situation?
Yes. That’s the entire point of this recipe, friend. Chop it, shred it, cube it—whatever’s easiest. If your ham is glazed or smoky, even better. Flavor bomb city.
What if I don’t have a ham bone? Is the soup ruined forever?
Nope. The soup is still delicious without it, but if you do have one, toss it in! It adds this deep, cozy flavor that takes things up a notch. Don’t stress if you don’t—it’s optional for a reason.
Do I have to use Yukon Gold potatoes?
Technically no, but they hold their shape and add that buttery vibe that russets just can’t replicate. If you sub in russets, peel them well and keep an eye on texture—they like to go mushy if you’re not careful.
Whole milk and cream? Isn’t that a bit much?
Listen. We’re not sipping broth here, we’re eating a creamy ham and potato soup that sticks to your ribs. I use both milk and a splash of cream to get the perfect balance. You can use all milk or sub in half-and-half—just don’t try to make this with water and hope for the best.
What’s with the roux AND the cornstarch? Isn’t that overkill?
Not at all. The roux gives flavor and body, but the cornstarch at the end? That’s your secret weapon for that perfect velvety finish without curdling or weird graininess. It stabilizes the dairy and lets us keep things creamy without simmering it into oblivion.
Leftovers/can I make this ahead of time?
Yes-ish. Make it, cool it fast, store it in the fridge. Reheat gently over low heat and stir often to keep it from separating. If you’re making it ahead intentionally, it’s best to do the dairy step right before serving. And remember: dairy-based soups don’t love to hang around. This one’s best fresh or within 2 days. And no freezing here, unless you like weird spongy potatoes and split cream 😅😬
tl;dr – What you def need to know
- Soup doesn’t like to be frozen once the dairy’s in, so enjoy it fresh or within 2 days. And reheat gently — we’re warming, not boiling.
- Use Yukon Golds and leftover ham for the best flavor and texture — save the russets for mashed potatoes, friends.
- The roux + cornstarch combo isn’t overkill — it’s the reason your soup turns out creamy and dreamy (not grainy or weird). And the dairy goes in at the end – trust me, you do not want to boil cream and milk for 30 mins if you like a smooth/creamy soup.
💬 Made it? Loved it? Got a question?
Tell me everything! Drop a comment and leave a star rating below — I live for hearing how these recipes show up in your kitchen.
And if this soup saved your dinner plans (or made those ham leftovers way less boring), go ahead and hit that Pin button so you don’t lose it in the great soup scroll of 2025. You officially earn a “used the ham bone” badge of honor. 🥣✨
Colin says
Thank you for sharing this recipe. It was awesome good
Nora says
I’m so glad, Colin!
Colin says
Thank you for sharing this recipe
Nora says
You’re welcome 🙂