Preheat your oven to 425°F (220°C). On a large, rimmed baking sheet, toss the broccoli florets with 2 tablespoons of olive oil, ½ teaspoon of kosher salt, and the black pepper. Arrange them in a single layer, ensuring they aren't crowded. Roast for 14-16 minutes, or until the edges are deeply browned and crispy, flipping halfway through.
While the broccoli roasts, make the sauce. In a medium saucepan over medium heat, melt the butter with the remaining 1 tablespoon of olive oil. Add the minced garlic and cook for just 60-90 seconds until fragrant—trust me, you don't want it to brown or it will turn bitter.
Sprinkle the flour over the garlic butter and whisk constantly for about 1 minute to cook out the raw flour taste. This creates your roux, the base for a smooth, lump-free sauce. Believe me, taking this minute is non-negotiable for perfect texture.
Slowly pour in the milk while whisking continuously. Bring the mixture to a gentle simmer, whisking often, until it thickens enough to coat the back of a spoon, about 3-4 minutes. Reduce the heat to low.
Remove the saucepan from the heat. Stir in the freshly grated parmesan cheese, onion powder, and remaining ½ teaspoon of salt. Whisk until the cheese is fully melted and the sauce is velvety smooth. Tip from me: Taking the pan off the heat prevents the cheese from becoming grainy.
Transfer the crispy roasted broccoli to a large serving bowl. Pour the warm garlic parmesan sauce over the top and gently toss to coat every floret. Garnish with extra parmesan and fresh parsley. Serve immediately while hot and crispy!