Preheat: Preheat the oven to 400°F. Prepare the casserole dish by lightly greasing it with a small amount of butter.
Cook Pasta: Bring a pot of well salted water to a boil, cook pasta until it is al dente. Drain the pasta and mix in 1 tbsp of butter. You can tell the pasta is al dente when it almost fully cooked, but still has a bit of bite to it. Usually, this means cooking it about 1 minute less than the package directions.
Sauté: While the pasta is cooking, melt remaining 3 tbsp of butter over medium heat in a large saucepan. Add the onions and cook until translucent, about 3 minutes. Add the garlic and cook for an additional 2 minutes until fragrant.
Make the Cheese Sauce: Whisk flour into the garlic and onion and cook for 2 minutes. Slowly pour in the milk, stirring constantly until the sauce begins to thicken, about 5 minutes. Whisk in mustard, salt, pepper, and cayenne. Remove from heat and add cheddar and gruyere cheese and stir until smooth
Place in Casserole Dish: Gently stir the cooked pasta into the cheese sauce and mix to ensure it is fully combined. Carefully pour the mixture into the prepared casserole dish.
Make the Breadcrumb Topping: In a bowl, combine panko, garlic and parmesan cheese. Using your fingers, rub in the butter until the mixture resembles course sand. Sprinkle all of the mixture over the macaroni and cheese.
Bake: Bake the macaroni and cheese in the oven for about 25 minutes, the sauce should be bubbly and the topping should turn golden.
Serve: Allow the macaroni and cheese to cool for at least 10 minutes before serving. I find this macaroni pairs well with a light arugula salad