Add the bacon to a large pot over medium-high heat. Cook for 8-10 minutes until crispy (if the pot gets too hot, reduce the heat). Remove the bacon to a bowl, leaving the bacon grease behind.
Add the onions to the pot and cook for 3-4 minutes until soft. Add the garlic and cook for 30 seconds. Stir in the flour and cook for 1 minute.
Slowly whisk in milk until the flour dissolves. Add the chicken broth, diced potatoes, salt, and black pepper. Bring to a boil, then lower the heat, and let it simmer for 20 minutes.
At this point, the soup should be quite thick. If the soup is not thick enough for your liking, continue simmering for a few more minutes. On the flip side, if it's too thick, just add some milk or water.
Finally, stir in the sour cream, cheddar cheese, and bacon.
Ladle into serving bowls and garnish with green onions or chives. Enjoy!