Crisp the bacon. In a large Dutch oven or soup pot over medium heat, cook the chopped bacon until crisp, 6–8 minutes. Remove with a slotted spoon to a paper-towel-lined plate, leaving about 1 tablespoon of bacon fat in the pot.
Sauté the aromatics. Add the butter. Once melted, add the diced onion and cook 4–5 minutes until soft and translucent. Stir in the garlic and cook 30 seconds more, until fragrant.
Make the roux. Sprinkle the flour over the onions and stir constantly for 1–2 minutes. It will look pasty — that’s exactly right.
Add broth and potatoes. Slowly pour in the chicken broth, whisking as you go to prevent lumps. Add the diced potatoes, salt, pepper, and smoked paprika (if using).
Simmer until tender. Bring to a gentle boil, then reduce heat and simmer 15–20 minutes, until the potatoes are completely fork-tender. Stir occasionally.
Blend to your liking. Use an immersion blender to blend about half the soup right in the pot, leaving plenty of potato chunks. (No immersion blender? Mash some potatoes with a potato masher, or blend 2 cups in a regular blender and stir back in.)
Finish with dairy and cheese. Stir in the milk and heavy cream. Remove the pot from the heat, then stir in the shredded cheddar a handful at a time until melted and smooth. Whisk in the sour cream until fully incorporated.
Serve loaded. Ladle into bowls and top with the reserved bacon, extra cheddar, a dollop of sour cream, and sliced chives. Serve hot.