In a large pot, cook the bacon until crispy. Remove and set aside, reserving about 1 tbsp of bacon grease.
Add the diced onion to the pot and cook until softened.
Sprinkle in the flour and stir constantly for 1 minute to form a roux.
Slowly whisk in the chicken broth and milk until smooth.
Add the diced potatoes and bring to a boil, then reduce heat and simmer for 10-15 minutes until potatoes are tender.
Use a potato masher or immersion blender to slightly mash the soup to your desired consistency.
Stir in sour cream, 1 cup cheddar cheese, salt, and pepper.
Top with remaining cheese, crispy bacon, and chopped green onions before serving.