In a large pot or Dutch oven, melt the butter over medium heat. Add the chopped onion and cook until softened, about 5-7 minutes.
Stir in the flour and cook for 1 minute, stirring constantly, to create a roux.
Gradually whisk in the chicken broth until smooth. Add the diced potatoes and bring to a boil. Reduce heat, cover, and simmer for 15-20 minutes, or until the potatoes are tender.
Stir in the milk, shredded cheddar cheese, and sour cream. Cook, stirring, until the cheese is melted and the soup is heated through. Do not boil.
Season with salt and black pepper to taste.
Ladle the soup into bowls and serve hot with your favorite toppings.
Notes
This soup is best served immediately. For a smoother texture, you can use an immersion blender to partially blend the soup before adding the cheese and milk.