Potato Soup Recipe with a Thick, Creamy Base
[⤓ Jump to Recipe]
Thick enough that the spoon leaves a trail, with soft chunks of potato still holding their shape instead of dissolving into paste. The trick is not more cream. It is a proper roux, a bare simmer, and keeping a blender away from the pot entirely. Forty five minutes start to finish, one pot, ingredients you probably already have.
Why You'll Love This Recipe
- Ready in 45 minutes, and most of that is hands-off simmering
- Ten core ingredients, all standard grocery items
- Thickens without any blending, so it never turns gummy
- Reheats better than most cream soups if you follow the low-and-slow rule below
Here's the one thing nobody tells you: skip the immersion blender completely. Instead, scoop out about a cup of the cooked potatoes near the end, mash them roughly with a fork against the side of a bowl, and stir them back in. Blending potato starch at high speed ruptures the starch cells and releases long chains that turn the whole pot gluey, closer to wallpaper paste than soup. Hand-mashing breaks them gently. You get all the body, none of the glue, and you keep actual potato chunks in the bowl.
Read Before You Start
Cut the potatoes to a consistent 3/4 inch. Uneven cubes are the reason people end up with half-mush, half-raw soup. The small pieces disintegrate while you wait on the big ones.
Never let it boil once the dairy goes in. Milk and cream break at a rolling boil, and once the soup looks separated and grainy, you cannot bring it back. Keep the surface at a lazy bubble, no more.
Ingredient Deep Dive & Notes
Yukon Gold potatoes. Medium starch, so they hold their cube shape through a 15 minute simmer while still tasting creamy. Russets fall apart faster and give you a thicker but grittier result. Red potatoes are the opposite problem: they stay firm but never contribute any body.
Don't substitute pre-shredded cheese. Bagged shredded cheddar is coated in cellulose and potato starch to stop it clumping in the bag, and that coating refuses to melt smoothly into liquid. It leaves a grainy film across the top. Grate it off a block, and the difference is immediate.
Beef bacon replaces pork bacon here as the standard swap. Turkey bacon works too, though it renders far less fat, so add an extra tablespoon of butter if you go that route.
Whole milk plus a little heavy cream, not all cream. All cream makes the soup heavy and flattens the potato flavor. The split gives you richness without the soup coating your mouth.
Low-sodium chicken broth. Regular broth plus salted bacon plus cheddar stacks up fast, and you lose the ability to season at the end.
If you like this style of thick, cheesy soup, the same roux method carries over to [Related recipe: Creamy Broccoli Cheddar Soup, link once published]. For a lighter brothy option using the same base vegetables, see [Related recipe: Old-Fashioned Vegetable Soup, link once published].
Equipment Needed
- Heavy-bottomed pot or Dutch oven, 5 quart or larger. A thin pot scorches the roux and the milk on the bottom before you notice.
- Box grater for the cheese, since we're grating from a block.
- Potato masher or a sturdy fork. No blender required.
Detailed Step-by-Step Cooking Guide
1. Render the beef bacon
2. Soften the onion and celery
3. Cook the roux properly
4. Add the broth gradually
5. Simmer to tender, not to mush
6. Mash, don't blend
7. Finish off the heat
Getting Potato Soup Texture Right
A finished pot should coat the back of a spoon and slowly fill the gap when you drag a finger through it. Loose enough to pour, thick enough to hold a topping. Too thin? Mash another half cup of the potatoes and stir them in, or simmer uncovered for a few more minutes on low. Do not add more flour at this stage, since there's no fat left to cook it into and it will taste raw. Gluey or stretchy? That's over-worked starch, almost always from a blender. There's no reversing it once it happens, which is exactly why the mashing method above matters more than it sounds. Grainy or separated? The dairy got too hot, or the cheese went in while the pot was still on the burner. Next batch, take the pot off the heat before the cheese and keep the milk below a simmer. Bland despite plenty of salt? Almost always underseasoned broth rather than underseasoned soup. A splash of the bacon drippings back in, or an extra pinch of thyme, fixes it faster than more salt. Slow Cooker and Instant Pot Versions
Brown the bacon, vegetables and roux on the stove first, then transfer everything with the broth and potatoes to the slow cooker. Low for 6 hours or high for 3. Stir in the dairy and cheese during the last 20 minutes with the lid off, or it will separate over the long cook.
Use sauté mode for steps 1 through 3, then deglaze carefully so nothing sticks and triggers a burn notice. Pressure cook on high for 8 minutes with a quick release, then mash and finish with the dairy on sauté-low. Cut the broth to 3.5 cups, since nothing evaporates under pressure.
How to Use This Soup Beyond a Bowl
How to Serve, Store & Reheat
Top each bowl with the reserved crisp beef bacon, a little extra cheddar, sliced green onions and a spoon of sour cream. Crusty bread or a simple green salad rounds it out.
Cool to room temperature within two hours, then refrigerate in an airtight container for up to 4 days. It thickens noticeably once chilled, which is normal.
Low heat on the stove, stirring often, with a splash of milk or broth to loosen it. Microwaving on full power is the fastest way to break the dairy. Use 50 percent power in one minute bursts if you must.
Not recommended once the dairy is in. Milk and cream separate on thawing and the potatoes turn spongy. If you want a freezer version, stop after step 6, freeze the potato and broth base for up to 3 months, then thaw and add the dairy and cheese fresh when reheating.
Dietary Variations & Adaptations
Skip the roux. Simmer the potatoes in the broth, then thicken at the end with 2 tablespoons cornstarch whisked into 3 tablespoons cold water, stirred in and cooked for one minute until it clears.
Use olive oil instead of butter, full-fat canned coconut milk in place of the milk and cream, and 3 tablespoons nutritional yeast instead of the cheddar. Add a squeeze of lemon at the end to cut the coconut sweetness.
Leave out the bacon, use vegetable broth, and add 1/2 teaspoon smoked paprika with the thyme to replace the smoky note.
“A note from the kitchen: salt the broth before the potatoes go in, not after the soup is finished. Potatoes absorb seasoning while they cook and stay bland if you only salt the surrounding liquid at the end, which is why some pots taste salty and flat at the same time. The other thing worth knowing: cheese proteins tighten and squeeze out their fat above roughly 160°F, which is what produces that grainy, oily surface. Off the heat, in two batches, every time. Recipe Timing Prep Time: 15 minutes Cook Time: 30 minutes Total Time: 45 minutes”
Allergen Notice: This recipe contains dairy (butter, milk, heavy cream, cheddar, sour cream) and gluten (all-purpose flour). Dairy can be swapped using the dairy-free variation above. Gluten can be swapped using the cornstarch method above. Always check the labels on your broth, bacon and cheese, since formulations vary by brand, and confirm any substitution with your own dietary needs. This is a description of ingredients, not a guarantee that the recipe is safe for any specific allergy.
Frequently Asked Questions
Recipe Card & Steps
Ingredients Checklist
Click an item to check it off as you prep
- 4 beef bacon, chopped (about 4 slices)
- 2 unsalted butter
- 1 medium yellow onion, diced (about 1 cup)
- 2 celery stalks, diced
- 3 arlic cloves, minced
- 1 all-purpose flour
- 4 low-sodium chicken broth
- 2 Yukon Gold potatoes, peeled and cut into 3/4-inch cubes
- 1 kosher salt, plus more to taste
- 1 black pepper
- 1 dried thyme
- 1 bay leaf
- 1 whole milk
- 1 heavy cream
- 1 sharp cheddar, grated from a block
- 2 sour cream
- 2 reen onions, sliced
Step-by-Step Instructions
Follow along and mark each step complete as you cook
Cook the chopped beef bacon in a dry 5-quart Dutch oven over medium heat for 6 to 8 minutes until crisp. Remove to a paper towel and leave the rendered fat in the pot.
Add the butter, onion and celery. Cook 5 minutes until the onion is translucent. Add the garlic and cook 30 seconds.
Sprinkle in the flour and stir constantly for 90 seconds, until the mixture looks like wet sand and smells nutty.
Add the broth one cup at a time, whisking smooth after each addition. Add the potatoes, salt, pepper, thyme and bay leaf.
Bring to a gentle simmer and cook uncovered 15 to 18 minutes, until a paring knife slides into a potato cube with no resistance but the cube still holds together.
Remove the bay leaf. Scoop out about 1 cup of the potatoes, mash coarsely with a fork, and stir back into the pot.
Reduce the heat to low. Stir in the milk and cream and warm 2 to 3 minutes without boiling.
Take the pot off the heat. Stir in the grated cheddar in two additions until fully melted. Taste and adjust salt.
Serve topped with the reserved bacon, sour cream and green onions.