Sauté the aromatics: Heat olive oil in a large pot over medium heat. Add onion and carrots with a pinch of salt.
Cook 5–6 minutes until softened. Stir in garlic and cook 30 seconds until fragrant.
Add broccoli and broth: Stir in the chopped broccoli. Pour in the broth and bring to a gentle boil.
Reduce to a simmer, cover, and cook 10–12 minutes, until the broccoli is tender.
Choose your texture: For a smoother soup, use an immersion blender to blend part or all of the pot. Leave some chunks for texture, or go completely smooth if you prefer.
Stir in milk and seasonings: Add milk, Dijon, smoked paprika, and a few grinds of black pepper. Keep heat on low—do not let it boil once dairy is added.
Thicken if needed: If you like a thicker soup, stir in the cornstarch slurry and simmer gently 1–2 minutes until it slightly thickens.
Add the protein gently: In a small bowl, whisk Greek yogurt with a ladle of hot soup to temper it.
Then whisk the yogurt mixture back into the pot over low heat. If using protein powder, whisk it with 1/2 cup warm milk or broth until smooth, then stir it into the soup. Keep the heat low to avoid curdling.
Melt in the cheese: Turn off the heat.
Gradually add cheddar (and Parmesan, if using) by the handful, stirring until smooth after each addition. Season with salt and more pepper to taste.
Finish and serve: Taste and adjust. Add a pinch of red pepper flakes if you like heat.
Ladle into bowls and garnish with extra shredded cheddar, cracked pepper, or a few broccoli florets.