Heat the oven and prep the dish.
Preheat to 375°F (190°C). Grease a 9x13-inch baking dish with butter or oil. This helps the edges crisp and makes serving easier.
Par-cook the firm veggies.
Bring a large pot of salted water to a boil. Add potato and carrot slices and cook for 4–5 minutes until just tender but not soft. Drain well.
This step keeps baking time reasonable and prevents a crunchy center.
Blanch the florets. In the same water, simmer broccoli and cauliflower for 2–3 minutes. Drain and spread on a towel to steam-dry.
Too much moisture can thin the sauce.
Sauté aromatics. In a saucepan, melt butter over medium heat. Add onion and cook 3–4 minutes until translucent.
Stir in garlic, thyme, and rosemary, cooking 1 minute until fragrant.
Make the creamy base. Sprinkle flour over the onions and stir for 1 minute to form a paste. Slowly whisk in cream and milk.
Add salt, pepper, nutmeg, and cayenne if using. Simmer 3–4 minutes until slightly thickened. Stir in half the grated cheese until melted.
Assemble.
In the baking dish, layer potatoes, carrots, broccoli, cauliflower, peas, and a pinch of salt. Pour the warm sauce evenly over the vegetables, nudging with a spoon to help it settle.
Add the cheesy top. Mix remaining grated cheese with Parmesan.
Sprinkle over the veggies. Toss breadcrumbs with olive oil and scatter on top for a golden crunch.
Bake. Cover loosely with foil and bake 20 minutes.
Remove foil and bake another 20–25 minutes, until bubbling at the edges and deep golden on top.
Rest and finish. Let the bake sit for 10 minutes. Sprinkle with parsley or chives and a whisper of lemon zest.
This rest time helps the sauce set, so slices hold together.
Serve. Spoon onto warm plates alongside turkey, ham, salmon, or a hearty roast. It also stands happily on its own with a crisp salad.