Cut off hard ends of broccoli stems and then separate into florets and stems. Cut the broccoli into bite-size pieces.
Heat oil in a large Dutch oven set over medium-high heat until shimmering. Add florets and cook until charred on the bottom. Stir and season with salt and pepper. Cook about 1 minute more, stirring occasionally. Transfer to a paper towel-lined plate to cool and set aside until ready to add before serving.
Reduce the heat to medium and add butter, onion, carrot and broccoli stems. Season very lightly with salt and pepper. Cook, stirring often until tender, but not browned, about 5 minutes. If the vegetables start to brown, reduce the heat to medium-low.
Add garlic and cook 30 seconds – just until bloomed.
Add chicken stock, milk and potato to the vegetable mixture and bring to a boil over medium-high heat. Reduce to barely a simmer and cook, stirring often, until vegetables are fork tender, about 30 minutes.
While the soup simmers, in a large bowl, combine the cheeses, mustard, nutmeg and crushed red pepper. Toss to mix.
Add 1 cup of cheese to the soup and use an immersion blender to blend until smooth. Continue adding the cheese and blending until all cheese is added.
Taste the soup and season with additional salt and pepper, if needed.
Add in the reserved broccoli florets, stir to mix and continue cooking just 1-2 minutes (over low heat) until florets are heated through.
Garnish with homemade croutons, if desired, and serve immediately.
Enjoy!