Heat 1 tablespoon butter and olive oil in a large pot over medium heat. Add diced onion and cook, stirring occasionally, until golden (3–5 minutes). Add garlic, paprika, mustard, cayenne, and pepper to taste. Cook, stirring constantly, for 45 seconds to 1 minute until fragrant.
Add the remaining 6 tablespoons butter and melt it down. Whisk in flour and cook for 2 minutes, whisking constantly until it thickens into a roux.
Gradually whisk in chicken broth. Once combined, slowly add half-and-half while whisking constantly. Reduce heat to medium-low, add bay leaf if using, and let simmer for 15 minutes while whisking occasionally until nicely thickened.
While the soup simmers, chop broccoli into bite-size pieces and shred cheese. Add broccoli and carrots directly into the soup mixture.
Allow the soup to cook on low for an additional 10–15 minutes or until the broccoli reaches your desired tenderness, stirring occasionally. If you prefer a smoother texture, blend some of the soup; however, I like it chunky!
Turn off the heat once the vegetables are tender. Gradually stir in cheese a handful at a time until melted completely. Taste and adjust seasoning with salt as needed.