Preheat oven to 375 degrees F.
Cook pasta according to package directions. Drain and set aside.
In a large pot or Dutch oven, melt the 1/2 cup of unsalted butter over medium heat. Once melted, add the flour and whisk constantly for about 4 minutes, until thickened. This is called a roux. Don’t rush this process as the raw flour needs to cook. At this point, the roux should be a bit pale in color and should begin to smell a tiny bit toasty.
Gradually, add the milk, stirring. Bring to a boil (turn up the heat to medium-high to get it going) and then reduce to a simmer for about 3-4 minutes, stirring often until thickened.
Add the freshly grated cheeses and stir until evenly combined. Cook for another 1-2 minutes. Add the cooked pasta (drained) to the sauce and stir until well combined. Season with garlic powder, salt, and pepper to taste. Transfer to a large 9” x 13” baking dish. Set aside.
Make the herb crumb topping: combine all the herbed bread crumb topping ingredients in a food processor and pulse a few times until you get crumbs. Note: if you don’t have food processor, use panko bread crumbs instead of bread.
Top the mac and cheese with the prepared herbed bread crumb topping.
Bake for about 25-30 minutes until golden brown and bubbly. Let it cool for 10 minutes. Enjoy!