Boil diced potatoes in water until just fork-tender, about 10–12 minutes, then drain and set aside
Melt butter in a large pot over medium heat
Add onion and cook until soft and translucent
Add garlic and cook for about 30 seconds until fragrant
Sprinkle flour over the mixture and stir continuously for 1–2 minutes
Slowly pour in chicken broth while stirring to avoid lumps
Bring to a gentle simmer until slightly thickened
Stir in milk and heavy cream until smooth
Add cooked potatoes and simmer gently for 10 minutes
Season with salt, black pepper, garlic powder, and onion powder
Reduce heat to low and stir in shredded cheddar cheese until melted
Add crumbled bacon, reserving some if desired
Stir in sour cream until fully combined
Remove from heat and let rest a few minutes before serving