Sauté aromatics: In a large pot, heat butter or olive oil over medium heat. Add onions and celery, cooking 3–4 minutes until softened. Add garlic and cook 30 seconds until fragrant.
Add potatoes and broth: Add diced potatoes, corn kernels, and broth. Bring to a boil, then reduce heat to a simmer. Cover and cook for 15–20 minutes until potatoes are tender.
Blend partially (optional): Use an immersion blender to partially blend the soup for a creamy texture while leaving chunks of potatoes and corn.
Add milk and seasonings: Stir in milk or cream and smoked paprika (if using). Cook gently until heated through.
Season: Adjust salt and pepper to taste.
Serve: Ladle soup into bowls and top with desired garnishes such as bacon, cheese, or fresh herbs.