Wash broccoli and cut florets into small, bite-sized pieces (1-2 inches). Peel and dice the tender inner stems. Dice onion, mince garlic, and finely dice or julienne the carrot. Grate the cheddar cheese and set aside.
In a large Dutch oven over medium heat, melt the butter. Add the diced onion and carrot, and cook for 5-6 minutes until softened. Add the garlic and cook for 1 minute until fragrant.
Sprinkle the flour over the vegetables and stir constantly for 1-2 minutes to cook out the raw flour taste.
Gradually whisk in the chicken broth, adding about 1 cup at a time to prevent lumps. Then whisk in the whole milk. Increase heat to medium-high and bring to a gentle simmer, whisking occasionally, until the soup thickens (about 4-6 minutes).
Add the chopped broccoli florets and stems to the pot. Stir in the Dijon mustard, garlic powder, and smoked paprika. Season generously with salt and pepper. Reduce heat to medium-low, cover, and simmer for 15-20 minutes until broccoli is tender.
For a semi-smooth or smooth texture, use an immersion blender to blend the soup directly in the pot to your desired consistency. If using, stir in the heavy cream now.
Remove the pot from heat. Add the freshly grated cheddar in small handfuls, stirring gently after each addition until fully melted and incorporated. Taste and adjust seasoning with salt and pepper.
Ladle the hot soup into bowls. Garnish with extra shredded cheddar and a light dusting of smoked paprika. Serve immediately with crusty bread.