01 - Preheat oven to 400°F. Lightly grease a 9x13-inch baking dish with butter or nonstick spray.
02 - Bring a large pot of salted water to a rolling boil. Add trimmed and halved Brussels sprouts, cooking for 4 to 5 minutes until just tender. Drain thoroughly and set aside.
03 - In a large skillet, melt butter over medium heat. Add the chopped onion and sauté for 3 minutes until softened and translucent. Stir in the minced garlic and cook for 1 additional minute until fragrant.
04 - Sprinkle flour over the onion mixture and cook, stirring constantly, for 1 minute to form a roux. Gradually whisk in the whole milk and heavy cream. Continue cooking and stirring for 3 to 5 minutes until the sauce thickens enough to coat the back of a spoon.
05 - Reduce heat to low. Add Parmesan cheese, mozzarella cheese, salt, black pepper, and ground nutmeg. Stir continuously until the cheeses are fully melted and the sauce is smooth and creamy.
06 - Add the blanched Brussels sprouts to the cheese sauce, gently tossing to coat each piece evenly. Transfer the mixture to the prepared baking dish, spreading it into an even layer.
07 - In a small bowl, combine the topping Parmesan cheese, panko breadcrumbs, and melted butter, mixing until the breadcrumbs are evenly moistened. Sprinkle the mixture uniformly over the casserole surface.
08 - Bake in the preheated oven for 20 to 25 minutes, or until the topping is golden brown and the sauce is bubbling around the edges.
09 - Remove from the oven and let the casserole rest for 5 minutes before serving to allow the sauce to set slightly.