Preheat your oven to 425℉.
Lay the broccoli out on a sheet tray in a single layer, drizzle with olive oil, kosher salt, and black pepper. Roast for 10 minutes until some tips start to get charred.
While the broccoli is roasting, warm 1 tablespoon olive oil over medium heat in a medium saucepan. Add the chopped shallot and garlic and sauté until soft, about 5 minutes. Transfer to a large mixing bowl.
Wipe out the pot and set it back over medium heat. Add the butter and let it melt, then sprinkle flour overtop. Whisk until the butter absorbs the flour and cook for 1-2 minutes to let the raw flour taste cook out. You should have a very pale roux.
While whisking constantly, slowly pour the milk into the roux. Bring to a light simmer and cook for 4-5 minutes until it has thickened slightly and coats the back of a spoon.
Turn the heat to low and stir in the gruyere and parmesan cheeses until fully combined. Season with kosher salt and black pepper.
Add the broccoli and cheese sauce to the large bowl with garlic and shallots. Mix until combined then transfer to a greased baking dish (or au gratin dish if you have it).
In a small bowl, combine the melted butter and panko breadcrumbs.
Sprinkle the buttery breadcrumbs all over top of the broccoli.
Bake in the 425°F oven for 25 minutes until golden and bubbly.