Cook chopped bacon in a large pot or Dutch oven over medium heat until crispy, about 8-10 minutes. Remove bacon and set aside on paper towels. Leave 2 tablespoons of bacon grease in the pot.
Add butter to the bacon grease. Once melted, add diced onion and cook for 4-5 minutes until soft and translucent. Add garlic and cook 30 seconds until fragrant.
Sprinkle flour over the onion mixture and stir constantly for 1-2 minutes to cook off the raw flour taste. This roux will thicken the soup.
Slowly pour in chicken broth while stirring, then add milk. Stir until smooth. Add diced potatoes, salt, and pepper. Bring to a boil, then reduce heat and simmer for 15-20 minutes until potatoes are fork-tender.
Use a potato masher to mash about half of the potatoes, leaving some chunks for texture. For a smoother soup, use an immersion blender for a few pulses.
Remove from heat. Stir in shredded cheddar, sour cream, and smoked paprika until cheese is melted and soup is creamy. Serve topped with extra cheese, crumbled bacon, sour cream, and chives.