Silky, golden, and bubbling on the stove in under an hour—this is the kind of creamy ham potato soup that turns leftover ham into something your whole family will ask for again.
⚡ Quick Recipe Snapshot: Prep: 20 min | Cook: 20 min | Total: 40 min | Servings: 4–5 | Difficulty: Medium | Cuisine: American
Why This Recipe Works
- Smart roux shortcut: A quick butter-and-flour base keeps the soup creamy without cream, and you control the thickness.
- Tender potatoes, real flavor: Diced potatoes cook tender in 10–15 minutes while ham and broth build a savory, hearty base.
- Weeknight-friendly: Uses pantry staples and leftover ham—no special shopping, no fuss, ready when you need comfort.
Grocery List (& Shortcuts)
Main Players
- 3½ cups peeled and diced potatoes (about 4–5 medium russets)
- 1 cup diced cooked ham (leftover holiday ham, deli ham, or even canned works)
- 3¼ cups low-sodium chicken broth
- 2 cups whole milk
- 5 tablespoons butter
- 5 tablespoons all-purpose flour
- ⅓ cup diced celery
- ⅓ cup finely chopped onion
- ½ teaspoon salt, plus black or white pepper to taste
Shortcut Highlight
Use pre-diced ham from the deli counter or canned ham—no need to cook it yourself. Same delicious result, half the work.
Smart Swaps
- Dairy-free: Substitute whole milk with unsweetened oat or almond milk; the roux will still thicken beautifully.
- Gluten-free: Use cornstarch or a GF flour blend in place of all-purpose flour (use the same amount).
- Broth swap: Vegetable broth works if you’re out of chicken broth—flavor shifts slightly but stays cozy.
Step-by-Step
Build the Base
Combine the diced potatoes, celery, onion, ham, and chicken broth in a large pot. Bring to a boil over medium-high heat, then reduce to medium and simmer until the potatoes are fork-tender, about 10–15 minutes. You’ll know they’re ready when a fork slides through easily. Stir in the salt and pepper to taste.
Make the Creamy Base
Melt the butter in a separate saucepan over medium-low heat. Whisk in the flour with a fork and cook, stirring constantly, for about 1 minute—this cooks out the raw flour taste. Slowly pour in the milk while whisking gently to avoid lumps. Continue stirring over medium-low heat until the mixture thickens, about 3–4 minutes. It should coat the back of a spoon.
Bring It Together
Pour the milk mixture into the stockpot with the potatoes and ham. Stir gently to combine and cook until heated through, about 2–3 minutes. If the soup feels too thick, thin it with a splash more milk or broth until you reach your preferred consistency. Taste and adjust salt and pepper as needed. Serve hot, topped with cheddar cheese, fresh chives, and crispy bacon if you like.
Theo’s Tips
- Texture matters: Don’t skip the roux step—it’s what makes this soup silky instead of watery. And go slow when adding the milk; whisking as you pour prevents lumps every time.
- Oops, too thick? No problem. Just add milk or broth a little at a time and stir. Soup is forgiving—there’s no “ruined” version, just a different consistency.
- Make-ahead magic: Prepare the potato-ham base up to 2 days ahead and refrigerate. Make the roux fresh when you’re ready to serve, then combine. This keeps the texture perfect and saves you time on busy nights.
Storage & Leftovers
Fridge: Store cooled soup in an airtight container for up to 4 days. To reheat, warm gently on the stovetop over medium-low heat, stirring occasionally and adding a splash of milk if it’s thickened too much.
Freezer: This soup freezes beautifully for up to 3 months. Cool completely, transfer to a freezer-safe container, and label with the date. Thaw overnight in the fridge, then reheat on the stovetop. The texture stays creamy and comforting.
Can I use a slow cooker for this?
Yes! Cook the potatoes, celery, onion, ham, and broth on low for 6–8 hours or high for 3–4 hours. Make the roux separately on the stovetop, then stir it in during the last 30 minutes of cooking. This turns it into a true set-it-and-forget-it meal.
What if I don’t have leftover ham?
Deli ham, canned ham, or even bacon bits work beautifully. You can also use diced smoked turkey or chicken for a lighter version—the soup stays just as hearty.
Is this ham and potato soup freezer-friendly?
Absolutely. It’s one of those soups that actually tastes better after a day or two in the freezer, as the flavors meld. Just reheat gently on the stovetop.
Can I make this dairy-free?
Yes! Use unsweetened oat milk or almond milk instead of whole milk. The roux thickens it just the same, and the soup stays creamy and satisfying.
💡 Love this recipe? Follow Cooking Save on Pinterest.
Save This Recipe & Tell Me How It Went!
This creamy ham potato soup is the kind of recipe that deserves a bookmark—it’s easy enough for a Tuesday night, cozy enough for a snow day, and smart enough to use up what’s already in your kitchen. Make it, love it, and come back to tell me how it turned out. Did you add bacon? Extra cheese? I’d love to hear what made it yours.
Stay cozy,
Theo

Creamy Ham Potato Soup
Ingredients
Equipment
Method
- Combine the diced potatoes, celery, onion, ham, and chicken broth in a large pot.
- Bring to a boil over medium-high heat, then reduce to medium and simmer until the potatoes are fork-tender, about 10–15 minutes.
- Stir in the salt and pepper to taste.
- Melt the butter in a separate saucepan over medium-low heat.
- Whisk in the flour with a fork and cook, stirring constantly, for about 1 minute.
- Slowly pour in the milk while whisking gently to avoid lumps.
- Continue stirring over medium-low heat until the mixture thickens, about 3–4 minutes.
- Pour the milk mixture into the stockpot with the potatoes and ham.
- Stir gently to combine and cook until heated through, about 2–3 minutes.
- If the soup feels too thick, thin it with a splash more milk or broth until you reach your preferred consistency.
- Taste and adjust salt and pepper as needed.
- Serve hot, topped with cheddar cheese, fresh chives, and crispy bacon if you like.