In a large pot or Dutch oven, melt the 2 tablespoons of unsalted butter over medium heat. Add the finely chopped onion and cook, stirring occasionally, for about 5-7 minutes until the onion is soft and translucent.
Add the 2 minced garlic cloves to the pot and cook for 1 minute more, just until the garlic becomes fragrant.
Add the 2 pounds of cubed potatoes and 4 cups of chicken broth to the pot. Increase the heat to high and bring the mixture to a boil. Once boiling, reduce the heat to a simmer, cover the pot, and cook for 15-20 minutes, or until the potatoes are very tender and can be easily pierced with a fork.
Use a potato masher to carefully mash about half of the potatoes directly in the pot to thicken the soup. For a smoother soup, you can blend part of it with an immersion blender, but leaving some potato chunks creates a nice texture.
Reduce the heat to low and stir in the 1 cup of whole milk, 1/2 teaspoon salt, and 1/4 teaspoon black pepper. Heat the soup through but do not let it boil.
Turn off the heat and gradually stir in the 8 ounces of shredded cheddar cheese and the 1/4 cup of sour cream until the cheese is fully melted and the soup is smooth and creamy.
Ladle the soup into bowls and garnish with the crumbled bacon and chopped chives before serving.