In a large ovenproof skillet over medium heat, heat the butter and olive oil. Once butter has melted, add the onions and salt. Cook, stirring occasionally and reducing the heat as needed, until deeply browned and caramelized, about 45 minutes.
Add the wine, scraping up any browned bits that may have stuck to the bottom of the pan. Simmer until the wine has reduced by half, 1 to 2 minutes. Stir in thyme and Worcestershire sauce and cook 1 minute more. Transfer the onions to a bowl and set aside. TIP: Onions can be made up to 2 days ahead and refrigerated in an airtight container.
Cook the pasta
Meanwhile, cook the pasta in a large pot of salted boiling water for 2 minutes less than the package instructions. Reserve 1 cup pasta water, then drain and spread the pasta on a large sheet pan to cool. TIP: Toss with a small drizzle of olive oil to prevent sticking.
Preheat oven to 375ºF and position a rack about 10 inches from the top.
Prepare the panko topping
In a small bowl, combine the panko, melted butter, salt and thyme, if using. Mix evenly coated and set aside.
Make the cheese sauce
Combine all three cheeses in a bowl. Remove 1 cup of cheese and set aside for topping.
In the same ovenproof skillet used for the onions (no need to wash it), melt the butter over medium heat. Whisk in the flour, reduce heat to low and cook for 2 to 3 minutes, stirring regularly to prevent browning. Whisking vigorously, slowly pour in the milk, starting with about 1/2 cup and allowing it to absorb and create a smooth mixture before slowly pouring in the rest. Increase heat to medium and simmer, whisking often, until thickened to the consistency of heavy cream and coating the back of a spoon, about 4 to 5 minutes. Remove from heat.
Add the cheese to the sauce and whisk gently until melted and sauce is smooth. Stir in the Dijon, nutmeg, cayenne, salt and black pepper. Add the drained pasta and two-thirds of the caramlized onions. Stir until well coated. Taste and season with a little more salt and pepper as needed. Stir in 1/4 cup reserved pasta water, adding a little more, if needed.
Assemble and bake
Top with the remaining onions and reserved cheese. Sprinkle the panko mixture evenly over the top.
Bake for 15 to 20 minutes, or until hot and bubbling around the edges. Switch the oven to high broil and broil for 1 to 3 minutes, until the topping is golden brown (watch it closely so it doesn't burn!) Let rest for 5 minutes before serving.
Notes
Provolene cheese: If you can't find this cheese, you can use Fontina, Gouda, or simply a little more of the cheddar and Guyère.
Cook pasta just until al dente – The pasta will continue cooking in the oven, so be sure to drain it a minute or two before the package instructions suggest. This helps prevent it from becoming overcooked and mushy.
Reserve pasta water – This is the not-so-secret trick to loosening a thick pasta sauce and keeping it silky smooth. Reserve a cup before draining the pasta so you can add it if needed.
Make a thinner cheese sauce. When baking a mac and cheese casserole, the sauce in the pot should be quite thinner than you’d want it to be in the finished dish. It will continue to thicken considerably as it is absorbed into the pasta in the cooking process.
Don't overbake the mac and cheese – Many recipes will have you baking a mac and cheese for 30 minutes or longer. But a long bake time means the pasta will soak up all the cheesy sauce, resulting in a dry dish. I find a 15 to 20 minute bake at medium heat is plenty to heat everything through. If the topping needs a little more color, pop it under the broiler for a minute or two, keeping a close eye on it.
Use a baking dish instead of a skillet: If you prefer to bake your mac and cheese in a baking dish, simply transfer the prepared pasta and cheese sauce to a greased 9x13-inch baking dish before adding the toppings. Continue with the recipe as directed.
Leftovers: Transfer cooled leftovers to an airtight container and refrigerate for up to 5 days.
Freeze: Let it cool, cover tightly and store it in the freezer for up to 3 months.