In a large pot, melt the butter over medium heat.
Add the chopped onion and sauté until translucent, about 5 minutes.
Add the diced potatoes and broth. Bring to a boil.
Reduce heat and let simmer until potatoes are tender, around 20 minutes.
Use an immersion blender to puree the soup until smooth, or blend in batches using a regular blender.
Stir in the milk or cream, and season with salt and pepper to taste. Heat through but do not boil.
Serve hot, garnished with chives or bacon bits if desired.