Place the chopped bacon in a large Dutch oven or soup pot. Cook over medium heat until browned and crisp.
Remove the bacon with a slotted spoon and set it aside. Reserve 2 tablespoons of bacon grease in the pot.
Add the butter and diced onion to the pot. Cook over medium heat for 2–3 minutes, or until the onion is tender.
Add the minced garlic and cook for approximately 30 seconds, stirring frequently.
Sprinkle the flour over the onion and garlic. Stir or whisk until smooth, and cook for approximately 1 minute.
Gradually add the chicken broth, stirring well to prevent lumps.
Add the chopped potatoes, whole milk, heavy cream, salt, black pepper, ancho chili powder, and red pepper flakes. Stir well.
Bring the soup to a gentle boil. Cook for 15–20 minutes, stirring occasionally, until the potatoes are tender when pierced with a fork.
Reduce the heat to low. Add the sour cream, shredded cheddar cheese, and most of the cooked bacon, reserving some bacon for garnishing. Stir until the cheese has melted.
Using an immersion blender, carefully blend part of the soup while leaving plenty of bite-sized potato pieces intact.
If using a standard blender, carefully transfer approximately 5 cups of soup to the blender. Blend on low, following the manufacturer’s safety instructions for hot liquids. Return the puréed soup to the pot. A potato masher may also be used.
Simmer the soup gently for another 10 minutes. Do not allow it to come to a hard boil after adding the cheese.
Ladle the soup into bowls and garnish with sliced green onions, crispy bacon, and shredded cheddar cheese. Serve warm and enjoy!