Finding a comforting soup that’s both hearty and dairy-free can feel like an impossible task. Most creamy potato soups rely heavily on milk, cream, or butter to get that rich, satisfying texture we all crave, and when you’re avoiding dairy—whether by choice or necessity—it seems like you’re stuck with bland, watery alternatives.
Fortunately, this dairy-free potato soup with ham proves you don’t need a drop of cream to create a thick, flavorful bowl of comfort. The potatoes naturally break down to create a creamy base, while the ham adds a savory depth that makes this soup feel indulgent without any dairy whatsoever.

Why You’ll Love This Dairy Free Potato Soup
- Dairy-free comfort – You get all the creamy, cozy vibes of classic potato soup without any milk or cream, making it perfect for those with dairy sensitivities or anyone looking to lighten things up.
- Quick weeknight meal – Ready in under an hour, this soup comes together fast enough for busy evenings when you need something warm and filling on the table.
- Simple, everyday ingredients – Just basic pantry staples and vegetables you probably already have on hand, plus some ham for protein.
- Hearty and satisfying – The combination of tender potatoes and savory ham makes this a complete meal in a bowl that’ll keep you full and happy.
- Great for meal prep – This soup keeps well in the fridge and actually tastes even better the next day, so you can make a big batch for easy lunches throughout the week.
What Kind of Potatoes Should I Use?
For this dairy free potato soup, you’ll want to use starchy potatoes like Russets or Yukon Golds. Russets are great because they break down more easily as they cook, which naturally thickens your soup and gives it that creamy texture without needing any dairy. Yukon Golds are another solid choice since they have a buttery flavor and will hold their shape a bit better if you prefer some chunky potato pieces in your soup. Whatever you do, skip the red or new potatoes for this recipe – they’re too waxy and won’t give you that thick, hearty consistency you’re looking for in a good potato soup.

Options for Substitutions
This soup is pretty forgiving when it comes to swapping ingredients:
- Ham: Leftover ham works great here, but you can also use diced ham steak, Canadian bacon, or even cooked bacon pieces. For a different protein, try cooked chicken or turkey, though you’ll lose that smoky ham flavor.
- Potatoes: Any potato variety works in this soup. Russets will break down more and create a thicker, creamier texture naturally, while Yukon golds or red potatoes hold their shape better for a chunkier soup.
- Chicken broth: Vegetable broth is a fine substitute, or you can use ham broth if you saved the liquid from cooking a ham. Just adjust the salt since ham broth tends to be saltier.
- Carrot and celery: These add flavor and texture, but if you’re missing one or the other, the soup will still turn out fine. You could also add other vegetables like diced bell peppers or corn.
- Italian seasoning: If you don’t have Italian seasoning, use a pinch of dried thyme or a bay leaf instead. Fresh herbs like parsley or chives added at the end work nicely too.
Watch Out for These Mistakes While Cooking
The biggest mistake when making potato soup is cutting your potatoes into uneven pieces, which causes some to turn mushy while others stay hard – aim for uniform 1-inch cubes so everything cooks at the same rate.
Another common error is boiling the soup too vigorously instead of maintaining a gentle simmer, as this can break down the potatoes too quickly and create a gluey texture rather than a creamy one.
When mashing the potatoes directly in the pot, resist the urge to mash too many – you want to break up about one-third of them to thicken the broth while leaving plenty of chunky potato pieces for texture.
Finally, wait until the very end to add your salt and pepper, since the ham and chicken broth already contain quite a bit of sodium, and you’ll get a better sense of what the soup needs after the flavors have had time to blend together.

What to Serve With Potato Soup?
This hearty potato soup with ham is pretty filling on its own, but I love serving it with some warm dinner rolls or a crusty baguette for dipping. A simple side salad with mixed greens and a light vinaigrette helps balance out the richness of the soup and adds some freshness to your meal. If you want to make it even more satisfying, try adding some cornbread on the side – the slight sweetness pairs really nicely with the savory ham and potatoes. You could also set out some extra toppings like chopped green onions, shredded cheese (if you’re not keeping it dairy-free), or crispy bacon bits so everyone can customize their bowl.
Storage Instructions
Store: This soup actually tastes even better the next day after all the flavors have had time to mingle. Keep it in an airtight container in the fridge for up to 4 days. It’s one of those meals that makes weeknight dinners so much easier when you’ve got leftovers ready to go.
Freeze: You can freeze this soup for up to 3 months, though the potatoes might get a slightly different texture when thawed. I like to freeze it in individual portions so I can grab just what I need for lunch. Let it cool completely before transferring to freezer-safe containers or bags.
Reheat: Warm it up on the stovetop over medium heat, stirring occasionally until heated through. You can also microwave individual portions for 2-3 minutes, stirring halfway. If the soup seems too thick after storing, just add a splash of chicken broth or water to thin it out to your liking.
| Preparation Time | 10-15 minutes |
| Cooking Time | 25-30 minutes |
| Total Time | 45-60 minutes |
| Level of Difficulty | Easy |
| Servings | 6 servings |
Estimated Nutrition
Estimated nutrition for the whole recipe (without optional ingredients):
- Calories: 1700-1900
- Protein: 85-95 g
- Fat: 45-55 g
- Carbohydrates: 220-240 g
Ingredients
- 2 carrots (diced into 1/4-inch pieces)
- 3 celery sticks
- 1 medium onion (finely chopped for even cooking)
- 1 tbsp olive oil
- 1.25 lb ham (cubed into 1/2-inch bite-sized pieces)
- 2.5 lb potatoes (peeled and cut into 1-inch chunks)
- 4 garlic cloves (minced)
- 1/2 tsp italian seasoning (I recommend McCormick for a balanced herb blend)
- 1/4 tsp red pepper flakes
- 4 cups chicken broth (I always use Swanson for consistent salt levels)
- 2 cups water
- salt to taste
- freshly ground black pepper to taste
Step 1: Prepare the Mise en Place
- 2.5 lb potatoes
- 2 carrots
- 3 celery sticks
- 1 medium onion
- 4 garlic cloves
- 1.25 lb ham
Peel and cut the potatoes into 1-inch chunks, placing them in a bowl of cold water to prevent browning—this also helps remove excess starch for a slightly lighter soup.
Dice the carrots into 1/4-inch pieces, chop the celery into small pieces, finely chop the onion for even cooking, mince the garlic, and cube the ham into 1/2-inch bite-sized pieces.
Having everything prepped and ready will ensure smooth cooking without interruptions.
Step 2: Build the Aromatic Base
- 1 tbsp olive oil
- 2 carrots
- 3 celery sticks
- 1 medium onion
Heat olive oil in a large pot over medium heat.
Add the diced carrots, celery, and chopped onion, cooking for 5-7 minutes while stirring occasionally until the vegetables are softened and fragrant.
This initial sauté develops the flavor foundation of the soup by allowing the aromatics to caramelize slightly, creating deeper, more complex flavors.
I like to let the vegetables cook undisturbed for 2-3 minutes at a time to get a light golden color on the edges.
Step 3: Add Proteins, Potatoes, and Seasonings
- 4 garlic cloves
- 1.25 lb ham
- drained potatoes from Step 1
- 1/2 tsp italian seasoning
- 1/4 tsp red pepper flakes
- 4 cups chicken broth
- 2 cups water
Stir in the minced garlic and cook for about 30 seconds until fragrant, then add the cubed ham, drained potatoes from Step 1, Italian seasoning, and red pepper flakes.
Mix well to coat everything with the oil and distribute the seasonings evenly.
Pour in the chicken broth and water, stirring to combine all ingredients and ensure the potatoes are mostly submerged.
Step 4: Simmer Until Potatoes Are Tender
Bring the soup to a boil over medium-high heat, then reduce the heat to medium-low and partially cover the pot with the lid ajar to allow steam to escape while keeping most of the liquid in the pot.
Simmer for 25-30 minutes until the potatoes are very tender and break apart easily with a spoon.
This slow simmer allows the flavors to meld together while the potatoes cook evenly throughout.
Step 5: Create a Creamy Texture and Season to Taste
- salt to taste
- freshly ground black pepper to taste
Using a wooden spoon or potato masher, gently mash some of the potatoes directly in the pot—aim for about 30-40% of the potatoes so you create a creamy, chunky consistency rather than a smooth purée.
I prefer leaving plenty of potato chunks because they give the soup better texture and heartiness.
Taste the soup and add salt and freshly ground black pepper as needed, remembering that the ham and broth already contribute saltiness, so season gradually.
Step 6: Serve and Enjoy
Ladle the soup into bowls while hot.
The natural creaminess from the mashed potatoes combined with the ham and dairy-free broth creates a satisfying, comforting soup without any cream or milk.

Quick Dairy Free Potato Soup with Ham
Ingredients
- 2 carrots (diced into 1/4-inch pieces)
- 3 celery sticks
- 1 medium onion (finely chopped for even cooking)
- 1 tbsp olive oil
- 1.25 lb ham (cubed into 1/2-inch bite-sized pieces)
- 2.5 lb potatoes (peeled and cut into 1-inch chunks)
- 4 garlic cloves (minced)
- 1/2 tsp italian seasoning (I recommend McCormick for a balanced herb blend)
- 1/4 tsp red pepper flakes
- 4 cups chicken broth (I always use Swanson for consistent salt levels)
- 2 cups water
- salt to taste
- freshly ground black pepper to taste
Instructions
- Peel and cut the potatoes into 1-inch chunks, placing them in a bowl of cold water to prevent browning—this also helps remove excess starch for a slightly lighter soup. Dice the carrots into 1/4-inch pieces, chop the celery into small pieces, finely chop the onion for even cooking, mince the garlic, and cube the ham into 1/2-inch bite-sized pieces. Having everything prepped and ready will ensure smooth cooking without interruptions.
- Heat olive oil in a large pot over medium heat. Add the diced carrots, celery, and chopped onion, cooking for 5-7 minutes while stirring occasionally until the vegetables are softened and fragrant. This initial sauté develops the flavor foundation of the soup by allowing the aromatics to caramelize slightly, creating deeper, more complex flavors. I like to let the vegetables cook undisturbed for 2-3 minutes at a time to get a light golden color on the edges.
- Stir in the minced garlic and cook for about 30 seconds until fragrant, then add the cubed ham, drained potatoes from Step 1, Italian seasoning, and red pepper flakes. Mix well to coat everything with the oil and distribute the seasonings evenly. Pour in the chicken broth and water, stirring to combine all ingredients and ensure the potatoes are mostly submerged.
- Bring the soup to a boil over medium-high heat, then reduce the heat to medium-low and partially cover the pot with the lid ajar to allow steam to escape while keeping most of the liquid in the pot. Simmer for 25-30 minutes until the potatoes are very tender and break apart easily with a spoon. This slow simmer allows the flavors to meld together while the potatoes cook evenly throughout.
- Using a wooden spoon or potato masher, gently mash some of the potatoes directly in the pot—aim for about 30-40% of the potatoes so you create a creamy, chunky consistency rather than a smooth purée. I prefer leaving plenty of potato chunks because they give the soup better texture and heartiness. Taste the soup and add salt and freshly ground black pepper as needed, remembering that the ham and broth already contribute saltiness, so season gradually.
- Ladle the soup into bowls while hot. The natural creaminess from the mashed potatoes combined with the ham and dairy-free broth creates a satisfying, comforting soup without any cream or milk.