Heat 1 tablespoon butter and olive oil in a large, heavy-bottomed stock pot or Dutch oven over medium heat. Add diced onion and sauté, stirring occasionally until tender, about 3–5 minutes. Add minced garlic, paprika, mustard, cayenne pepper, and pepper (I add 1 teaspoon, but add to preference). Cook another 45 seconds to 1 minute, stirring constantly, until fragrant.
Add in remaining 6 tablespoons butter and melt. Once melted, add in flour and whisk to combine. Cook 2–4 minutes, whisking constantly, until flour is thickened. Don’t rush this, or your soup won’t properly thicken.
Gradually add in chicken stock, whisking constantly. Once added, gradually add half-and-half, again whisking constantly as you add. Reduce heat to medium-low, add bay leaf, and allow to simmer 15 minutes or until thickened a bit. (Whisk every few minutes as you chop the broccoli!)
Meanwhile, chop broccoli and shred cheese. Add chopped broccoli and matchstick/shredded carrots (give carrots a quick chop in half if they are super long).
Allow soup to simmer over low heat for about 15–20 minutes, or until broccoli is crisp-tender (or tender to your preference), stirring occasionally. Season to taste with salt (I add about a teaspoon). You can blend some of the soup or use an immersion blender here if desired. I like it chunky, but blend to preference if desired.
Turn off heat. Add in cheese a handful at a time, stirring until melted. Taste for seasoning. Serve immediately in bread bowls or regular bowls with a side of bread for dipping!
