6 ounces thick-cut bacon – cut into 0.5-inch pieces
2 tbsp unsalted butter
8 ounces yellow onion – finely chopped
2 stalks celery – finely chopped
2 tbsp all-purpose flour
4 cups chicken broth – low-sodium
2 pounds russet potatoes – peeled and diced 0.5-inch
2 cups whole milk
0.5 cups heavy cream
1.5 tsp kosher salt
0.5 tsp ground black pepper
chives – thinly sliced (for serving)
Instructions
Cook the bacon pieces in a large heavy pot or Dutch oven over medium heat until crisp, 8–10 minutes; leave about 2 tbsp drippings in the pot and add the butter to melt.
Add the onion and celery and cook, stirring, until softened and translucent, 5–7 minutes.
Sprinkle in the flour and stir constantly until the mixture looks glossy and smells nutty, 1–2 minutes.
Gradually whisk in the chicken broth, scraping up any browned bits, until smooth.
Add the potatoes, bring to a simmer, then partially cover and cook, stirring occasionally, until the potatoes are very tender, 15–20 minutes.
Off heat, use a potato masher to crush some of the potatoes in the pot until the soup thickens while leaving plenty of chunks.
Stir in the milk and heavy cream, return to a gentle simmer, and cook until creamy and the soup lightly coats a spoon, 5–10 minutes.
Season with the kosher salt and black pepper; taste and adjust as needed.
Ladle into warm bowls and garnish with the chives. Serve hot.