Peel and dice the potatoes into small cubes for even cooking.
In a large pot over medium heat, melt the butter.
Add the diced onion and sauté until soft, about 3 minutes.
Stir in the minced garlic and cook for another minute.
Pour in the broth and add the diced potatoes.
Stir in salt, black pepper, and smoked paprika if using.
Bring the soup to a boil, then reduce the heat to low and let it simmer for 15-20 minutes, or until the potatoes are fork-tender.
Use an immersion blender to blend the soup until smooth, or mash the potatoes with a potato masher for a chunkier texture.
Stir in the milk or heavy cream and let the soup warm for another 5 minutes.
Taste and adjust seasoning if needed.
Ladle into bowls and serve warm.
Optional: Top with shredded cheese, crispy bacon, sour cream, or chives for extra flavor.