Sauté your aromatics: Warm the butter or oil in a large pot over medium heat. Add onion and a pinch of salt.
Cook until soft and translucent, about 5–7 minutes. Stir in the garlic and cook 30 seconds, just until fragrant.
Add the vegetables: Toss in the broccoli florets and diced potato. Stir to coat with the onion mixture.
Let everything mingle for a minute or two.
Pour in the broth: Add the broth, salt, pepper, and Dijon. Bring to a gentle boil, then reduce to a simmer. Cover and cook until the broccoli is very tender and the potatoes are soft, 12–15 minutes.
Blend until smooth: Turn off the heat.
Use an immersion blender to purée the soup right in the pot until silky. If using a countertop blender, work in batches, venting the lid and covering loosely with a towel. Blend to your preferred texture.
Finish with creaminess: Return the soup to low heat if you used a blender.
Stir in milk or half-and-half and the cheese, if using, until melted and smooth. Taste and adjust seasoning with more salt and pepper. Add red pepper flakes or a squeeze of lemon if you like a little lift.
Serve and garnish: Ladle into bowls and finish with a drizzle of olive oil, extra cheese, or chopped herbs.
Serve with toasted bread or a simple salad.