Sauté aromatics: In a large soup pot, heat butter or olive oil over medium heat. Add onions and cook until translucent, 3–4 minutes. Add garlic and cook for 30 seconds.
Cook potatoes and broccoli: Add diced potatoes and broth. Bring to a boil, reduce to simmer, and cook for 10–15 minutes until potatoes are tender. Add broccoli and cook another 5–7 minutes until tender.
Blend partially (optional): Use an immersion blender to partially blend the soup for a creamy texture while leaving some chunks of broccoli and potato.
Add cheese and milk: Stir in shredded cheddar cheese and milk or cream. Cook on low heat until cheese melts and the soup is creamy.
Season: Adjust salt, pepper, and optional nutmeg to taste.
Serve: Ladle soup into bowls and garnish with extra cheese, bacon, or herbs if desired.