Cook the bacon in a large pot or Dutch oven over medium heat for 6–8 minutes, until crisp. Move it to a paper towel-lined plate. Leave about 2 tablespoons of the drippings in the pot and pour off the rest.
Add the onion and cook for 4–5 minutes, until soft. Stir in the garlic and cook for 30 seconds.
Sprinkle in the flour and stir for 1 minute.
Slowly pour in the broth, stirring as you go so no lumps form. Add the potatoes and bring to a boil. Reduce the heat, cover and simmer for 15–18 minutes, until the potatoes are very tender.
Mash about half of the potatoes right in the pot with a potato masher. Leave the rest in chunks.
Stir in the milk and heat for 3–4 minutes, until hot. Don’t let it boil.
Take the pot off the heat. Stir in 1 cup of the cheddar and the sour cream until melted and smooth. Season with salt and pepper.
Ladle into bowls and top with the remaining cheddar, the bacon and the green onions.