Thick, creamy potato soup has a way of disappearing fast once it hits the table. The best bowls are velvety without being gluey, with soft potato pieces still giving you something to chew and smoky bacon running through every spoonful. This version gets that balance right by mashing only part of the potatoes at the end, so you get body without losing the rustic texture that makes potato soup satisfying in the first place.
The other thing that makes this bowl work is the order. Bacon goes first so the drippings can season the onion, then a quick flour-and-butter roux gives the soup enough structure to hold the milk, cream, and cheddar without turning thin or grainy. If you’ve ever had potato soup that tasted good but felt flat, it usually needed better seasoning and a little more attention to texture. Both are built in here.
Below, I’ll walk through the part that matters most: how to keep the soup creamy instead of pasty, plus a few easy swaps if you need to work with what’s already in the kitchen.
I loved that the soup thickened up without turning into mashed potatoes. The bacon drippings gave the base a deeper flavor, and the cheddar melted in smooth once I took the pot off the heat for a minute.
Save this creamy potato soup for the nights when you want a thick, bacon-topped bowl with cheddar and chives on top.
The Trick to Creamy Potato Soup That Still Tastes Like Potatoes
The failure point in potato soup is usually texture. If you puree everything, the starch turns the soup into a heavy paste. If you leave every potato chunk intact, the broth can taste thin no matter how much cream you add. The sweet spot is somewhere in the middle: simmer the potatoes until they’re tender, then mash some of them right in the pot so they thicken the broth naturally while a few pieces stay whole.
The roux matters here too. Butter and flour cooked together for a minute or two give the soup body that holds up after the milk, cream, and cheese go in. Skip that step and you’ll end up relying on cheese alone, which can leave the soup greasy instead of silky. I also like adding the dairy after the potatoes are fully cooked, since a rolling boil can make milk taste scorched and can push cheddar toward grainy.
What Each Ingredient Is Actually Doing in This Bowl

- Russet potatoes — These break down beautifully and help thicken the soup without needing extra starch. Waxy potatoes stay firmer and won’t give you the same creamy body.
- Bacon and drippings — The bacon gives you salt, smoke, and a savory base, while the drippings season the onion before the broth even goes in. If you don’t eat pork, swap in butter and a pinch of smoked paprika for some of that depth.
- Butter and flour — This is the structure. Cook them together long enough to lose the raw flour taste, but not so long that the roux turns dark, or the soup will taste nutty in a way that fights the potatoes.
- Whole milk and heavy cream — Whole milk keeps the soup from getting too rich, and cream adds that smooth finish. You can use all whole milk in a pinch, but the bowl will be thinner and less luxurious.
- Cheddar — Sharp cheddar gives the soup its tang and finishes the broth with a little bite. Grate it yourself if you can; pre-shredded cheese melts less smoothly because of the anti-caking coating.
Building the Soup in the Right Order
Render the Bacon First
Cook the diced bacon over medium heat until it’s crisp and the fat has rendered out, then lift it out with a slotted spoon. The drippings left behind are the start of the soup’s flavor, so don’t pour them off unless there’s a huge amount in the pot. If the bacon starts to darken too quickly, lower the heat; burned bacon fat gives the whole pot a bitter edge.
Cook the Onion in the Drippings
Add the onion to the bacon fat and let it soften until it turns translucent and sweet at the edges. Garlic only needs about a minute, just long enough for the raw smell to fade. If the garlic browns, pull the pot off the heat for a moment before moving on, because bitter garlic is hard to hide in a mild soup like this.
Make the Roux and Add the Broth
Stir the butter and flour together until it looks like a smooth paste and smells a little nutty, then whisk in the broth. This is where smoothness starts, so add the liquid gradually at first and keep whisking until the mixture looks even again. Once the potatoes go in, bring the pot to a boil only long enough to get things moving, then drop it to a steady simmer so the starch doesn’t seize up.
Finish with Dairy, Cheese, and Texture
When the potatoes are tender, add the milk and cream and mash some of the potatoes against the side of the pot. That partial mash is what gives the soup its thick, spoon-coating texture without turning it into glue. Pull the heat down before adding the cheddar, then stir until it melts smoothly and season at the end so you can taste the salt level after the bacon and cheese have done their work.
How to Adapt This for a Lighter Bowl, a Bigger Batch, or No Bacon
Dairy-Free Version
Use olive oil or plant-based butter in place of the butter, and swap the milk and cream for unsweetened oat milk or cashew milk. The soup won’t be quite as rich, but the potatoes still give it a creamy body once you mash part of them. Skip the cheddar or use a good melting dairy-free cheese if you already know one you trust.
No-Bacon Potato Soup
Leave out the bacon and start with butter, then add a pinch of smoked paprika and an extra handful of chives at the end. You lose the smoky background note, but the soup still tastes full and savory. A little extra salt helps bring the potato flavor forward when the bacon is gone.
Thicker, Almost Chowder-Like Texture
Mash more of the potatoes before serving, or simmer the soup uncovered for a few extra minutes after the dairy goes in. That gives you a denser bowl with a little more body on the spoon. If it gets thicker than you want, loosen it with a splash of broth instead of more cream so the flavor doesn’t get heavy.
Storage and Reheating
- Refrigerator: Keeps 3 to 4 days. It will thicken as it chills, so expect a denser texture the next day.
- Freezer: Freezes, but the dairy can separate a little on thawing. For the best result, freeze before adding the milk, cream, and cheddar, then finish those ingredients when reheating.
- Reheating: Warm it slowly over low heat and stir often. High heat can make the dairy split and can turn the potatoes gummy, so patience matters here. Add a splash of broth or milk if the soup has tightened up too much in the fridge.
Answers to the Questions Worth Asking

Potato Soup
Ingredients
Equipment
Method
- Cook the diced bacon in a large pot over medium heat until crispy, then remove and set aside, leaving the drippings.
- Sauté the diced onion in the bacon drippings for 4 minutes, then add the minced garlic and cook 1 minute.
- Melt the butter in the pot, stir in the all-purpose flour, and cook 1-2 minutes stirring constantly.
- Pour in the chicken broth and add the diced potatoes, bring to a boil, then reduce heat and simmer 15-20 minutes until potatoes are tender.
- Stir in the whole milk and heavy cream, then mash some of the potatoes to create a creamy texture.
- Stir in the shredded cheddar until melted, then season with salt and black pepper.
- Ladle the soup into bowls and top with the crispy bacon, sour cream, and chives.