Step 1: Cook the Bacon : In a large soup pot or Dutch oven, cook chopped bacon over medium heat until crispy. Remove the bacon pieces and set aside on paper towels. Leave about 1 tablespoon of bacon fat in the pot (discard the rest).
Step 2: Sauté the Aromatics : Add butter to the pot with the bacon fat. Stir in the diced onion and cook for 3–4 minutes until soft and translucent. Add minced garlic and cook for another 30 seconds until fragrant.
Step 3: Add Potatoes and Broth : Add the diced potatoes to the pot. Pour in the chicken or vegetable broth, just enough to cover the potatoes. Bring to a boil, then reduce heat and simmer for 15–20 minutes, or until potatoes are tender.
Step 4: Create the Cream Base : In a small bowl, whisk flour with a bit of milk to form a slurry (this prevents lumps). Stir the slurry into the soup and mix well. Add the remaining milk and optional heavy cream. Simmer for 5–7 minutes until thickened.
Step 5: Blend (Optional) : For a smooth texture, use an immersion blender to puree part or all of the soup. For a chunkier soup, mash some potatoes with a spoon and leave the rest whole.
Step 6: Add Cheese and Bacon : Stir in cheddar cheese (if using) until melted and incorporated. Add half the crispy bacon pieces and season with salt, pepper, and smoked paprika.
Step 7: Serve : Ladle the soup into bowls. Top with extra bacon, shredded cheddar, and a sprinkle of fresh chives. Serve hot with crusty bread or garlic toast on the side.