Sweat the aromatics: In a large pot over medium heat, melt the butter.
Add the onion and a pinch of salt. Cook 4–5 minutes until soft and translucent, then stir in the garlic for 30 seconds.
Make the roux: Sprinkle in the flour and whisk to form a paste. Cook 1–2 minutes, stirring, until the raw flour smell fades. Don’t brown it—keep the heat moderate.
Add liquids gradually: Whisk in the broth a little at a time until smooth, then add the milk.
Bring to a gentle simmer, stirring often so nothing sticks.
Add veggies and season: Stir in the broccoli, grated carrot, Dijon, nutmeg, and a pinch of salt and pepper. Simmer 10–12 minutes, stirring occasionally, until the broccoli is tender.
Adjust texture: For a smoother soup, blend about half with an immersion blender right in the pot. For a chunky style, skip blending or blend just a little.
Melt in the cheese: Reduce heat to low.
Add the cheddar a handful at a time, stirring until fully melted before adding more. Keep the soup below a simmer to prevent curdling or graininess.
Taste and finish: Add salt, pepper, and optional cayenne to taste. If it’s too thick, loosen with a splash of broth or milk. If it’s thin, simmer a few minutes more.
Serve: Ladle into bowls and top with extra cheddar, cracked pepper, or a few red pepper flakes.
Crusty bread on the side is never a bad idea.