Preheat oven to 425 degrees F. Line a large baking sheet with parchment paper.
Combine the broccoli with the olive oil and salt in large bowl. Toss to combine. Transfer to prepared baking sheet and arrange in a single layer.
Roast in preheated oven for 15 minutes. Stir half way through cooking. Broccoli is done with tips start to turn dark brown.
To make the cheese sauce:
Melt butter over medium high heat in large sauce pan or dutch oven. Add mushrooms and onion. Stir to coat in melted butter and then allow to cook, undisturbed, until they begin to turn golden brown. Then stir occasionally until fragrant, about 8-10 minutes total.
Add flour and constantly stir. Reduce heat to medium and allow to cook for about 4-5 minutes.
Add the milk and salt, stir while scraping the bottom of the pan to loosen anything that sticks, and cook until slightly thickened, about 5 minutes.
Remove from heat and stir in grated cheddar.
To make the crumb topping:
Combine all topping ingredients in small bowl.
To make the casserole:
Preheat oven to 400 degrees F.
In large bowl (or the pan you used to make the cheese sauce), combine roasted broccoli with cheese sauce. Gently toss to combine. Transfer to a greased 9x13 baking dish. Sprinkle with crumb topping.
Bake, uncovered, for about 10 minutes. Then broil for an additional 2-5 minutes to brown.
Notes
To properly roast the broccoli, it must be completely dry. If you wash it, be sure to allow sufficient time to allow it to fully air dry before roasting.
Whenever making a cheese sauce, it's always best to buy a block of cheese and grate it yourself. Pre-shredded cheese often contain ingredients to prevent clumping and it can change the consistency of your cheese sauce.
Whole milk is recommended for the cheese sauce, but lowfat or skim will also work. I've also had great success cooking cheese sauces with evaporated milk.
A bit of ground mustard added to the cheese sauce would be an incredible twist on this broccoli casserole recipe!