Prep the oven and dish: Heat oven to 375°F (190°C). Grease a 9x13-inch baking dish or similar casserole pan.
Prepare the broccoli: Cut broccoli into small florets. Bring a large pot of salted water to a boil.
Blanch florets for 2 minutes until bright green and just tender. Drain and rinse under cold water. Pat dry well.
If using frozen broccoli, thaw and squeeze out excess moisture.
Make the roux: In a medium pot, melt the butter over medium heat. Stir in flour and cook, whisking, for 1 minute to remove the raw taste.
Build the sauce: Slowly whisk in the milk, then the broth, until smooth. Simmer 2–3 minutes, stirring, until slightly thickened and creamy.
Add flavor and cheese: Lower the heat and whisk in cream cheese until melted.
Stir in 1 cup cheddar, Parmesan, garlic, onion powder, Dijon, paprika, salt, and pepper. Taste and adjust seasoning. The sauce should be well-seasoned because it will mellow in the oven.
Combine with broccoli: Add the broccoli to the sauce and fold gently to coat every floret.
Assemble: Spread the mixture into the baking dish.
Sprinkle the remaining 1/2 cup cheddar on top.
Add the topping: Mix breadcrumbs or crushed crackers with olive oil or melted butter. Scatter evenly over the casserole.
Bake: Bake uncovered for 18–22 minutes, until bubbling at the edges and the top is golden.
Rest and serve: Let it sit for 5–10 minutes before serving so the sauce sets slightly. Garnish with a pinch of paprika or chopped parsley if you like.