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 minced garlic and cook for another minute until fragrant.
Whisk in the flour and cook for 1-2 minutes to create a roux.
Gradually whisk in the chicken broth, ensuring no lumps form.
Add the diced potatoes, salt, and pepper. Bring to a boil, then reduce heat and simmer for 20-25 minutes, or until potatoes are tender.
Using an immersion blender, blend the soup until smooth and creamy. Alternatively, carefully transfer batches of soup to a regular blender and blend until smooth, then return to the pot.
Stir in the heavy cream and heat through, but do not boil. Taste and adjust seasonings if needed.
Serve hot, garnished with your favorite toppings like chives, bacon bits, or shredded cheese.
Notes
For a richer flavor, you can add a bay leaf while simmering the potatoes and remove it before blending.