Peel the potatoes and chop them into ½-inch cubes.
In a large soup pot or Dutch oven, cook the bacon over medium heat until crispy.
Remove the bacon and set it aside on a paper towel-lined plate, leaving the bacon drippings in the pot.
Add the onions to the drippings and sauté over medium heat until they begin to soften, about 4 to 5 minutes.
Add the garlic and cook for an additional minute until fragrant.
Sprinkle in the flour and whisk to form a thick mixture.
Continue cooking for 1 minute, stirring constantly.
Gradually pour in the chicken stock and milk, whisking continuously until smooth.
Add the potato cubes and bring the soup to a gentle simmer over medium heat.
Lower the heat to medium-low and simmer until the potatoes are tender, about 15 to 20 minutes, ensuring the mixture doesn't boil to prevent the milk from scorching.
Lightly mash some of the potatoes with a potato masher to thicken the soup.
Remove from heat, then stir in the shredded cheese, sour cream, chives, and half of the crispy bacon.
Season with salt and pepper to taste. Garnish with the remaining bacon before serving.