Crisp the bacon: Place the chopped bacon in a large heavy pot over medium heat. Cook until browned and crispy, 6–8 minutes.
Transfer bacon to a paper towel–lined plate. Leave about 2 tablespoons of drippings in the pot.
Sauté aromatics: Add butter to the pot. Stir in onion, celery, and carrots.
Cook, stirring occasionally, until softened and fragrant, 5–6 minutes. Add garlic and cook 30 seconds more.
Build the base: Sprinkle flour over the vegetables and stir to coat. Cook 1 minute to remove the raw flour taste.
Add liquids and potatoes: Pour in broth gradually, whisking to avoid lumps.
Add diced potatoes, bay leaf, thyme, smoked paprika, 1 teaspoon salt, and 1/2 teaspoon black pepper. Bring to a gentle boil, then reduce to a simmer.
Simmer until tender: Cook uncovered 15–20 minutes, or until potatoes are fork-tender. For a creamier texture, lightly mash some of the potatoes against the side of the pot.
Add dairy: Lower the heat to medium-low.
Stir in milk (or half-and-half). Warm gently until steamy but not boiling.
Melt the cheese: Remove the pot from heat. Gradually add shredded cheddar by the handful, stirring between additions until fully melted and smooth.
Stir in sour cream if using. Taste and adjust seasoning.
Finish and serve: Stir in a splash of hot sauce or vinegar if you like a little brightness. Ladle into bowls.
Top with crispy bacon and sprinkle with green onions or chives.