This cream of potato soup is the kind of dinner that comes together in one pot and tastes like it took a lot more effort than it really did. Made with a simple butter and flour roux, a mirepoix of onion, celery, and carrot, and a partial mash at the end, this recipe delivers that classic thick, spoon-coating texture with just enough potato chunks left for bite. It's genuinely simple to pull off, even on a weeknight, and stretches a handful of affordable ingredients into a pot that feeds the whole family.
Enameled Cast Iron Dutch Oven optional - for even heat distribution
Handheld Immersion Blender optional - for easier blending
Microplane Fine Grater optional - for grating cheese and garlic
Ingredients
4tablespoonsunsalted butter
1mediumyellow oniondiced
2celery stalksdiced
2mediumcarrotsdiced
3clovesgarlicminced
1/3cupall purpose flour
4cupschicken brothor vegetable broth
2poundsYukon Gold or russet potatoespeeled and diced into 1-inch pieces, about 900g
1bay leaf
2cupswhole milk
1/2cupheavy cream
1teaspoonsaltplus more to taste
1/2teaspoonblack pepper
1/2teaspoonsmoked paprika
Optional Toppings
shredded cheddar cheese
crispy bacon bits
chopped chives
sour cream
Instructions
Dice onion, celery, and carrots into small, even pieces. Mince garlic and set aside separately. Peel potatoes and cut into 1-inch cubes.
Melt butter in Dutch oven over medium heat. Add onion, celery, and carrot. Cook for 5-7 minutes until onion is translucent. Add garlic and cook for 30 seconds until fragrant.
Sprinkle flour over vegetables and stir constantly for 2 minutes until mixture is thick and slightly golden.
Slowly pour in chicken broth while whisking constantly. Add potatoes and bay leaf. Bring to a boil, reduce to simmer, cover partially, and cook for 15-18 minutes until potatoes are fork tender.
Remove and discard bay leaf. Use a potato masher to mash about half the potatoes directly in the pot, or pulse with an immersion blender 2-3 times.
Reduce heat to low. Pour in whole milk and heavy cream, stir gently, and warm through for 3-5 minutes without letting it boil.
Stir in salt, black pepper, and smoked paprika. Taste and adjust seasoning. Thin with more milk or broth if needed.
Ladle into bowls and top with shredded cheddar, bacon bits, chives, or sour cream. Serve immediately.
Notes
Dice potatoes uniformly so they finish cooking at the same time.
Whisk the broth in gradually to avoid a lumpy base.
Keep the heat low once the milk and cream go in to prevent curdling.
This soup stores well in the refrigerator for up to 4 days in an airtight container.
Reheat gently on the stovetop over low heat, adding a splash of milk or broth to loosen the texture.
Freezing is not recommended as the dairy and potatoes can turn grainy after thawing.
For a lighter version, swap the heavy cream for additional milk or a splash of half and half.
For a spicier kick, add a pinch of cayenne or a diced jalapeño with the onions.
To make it heartier, stir in cooked, crumbled sausage or diced ham near the end of cooking.
For a vegetarian version, use vegetable broth in place of chicken broth.