Layers of roasted aubergine and optional potato, a lamb or beef sauce with tomato, red wine, cinnamon and allspice, and a thick nutmeg béchamel enriched with egg yolks and cheese, baked until deep golden.
Heat the oven to 220°C (425°F), or 200°C (400°F) fan. Slice the aubergines lengthways 1 cm (⅜ in) thick, salt for 20 minutes and pat dry.
Brush with oil and roast 20–25 minutes, turning once, until soft and golden. Roast the sliced potatoes separately for 15–20 minutes, if using.
Brown the mince for 8–10 minutes. Add the onion for 5 minutes, garlic for 30 seconds and tomato paste for 1 minute.
Add the wine for 2 minutes, then the tomatoes, spices, oregano, bay, sugar, salt and pepper. Simmer uncovered 30–35 minutes until thick. Stir in the parsley.
For the béchamel, cook the butter and flour for 2 minutes, whisk in the warm milk gradually and cook 5–7 minutes until thick. Off the heat, add the nutmeg, seasoning and cheese, cool 5 minutes and whisk in the yolks.
Lower the oven to 180°C (350°F), or 160°C (325°F) fan. Oil the dish and scatter with breadcrumbs.
Layer the potatoes, half the aubergine, all the meat sauce and the rest of the aubergine. Top with the béchamel and extra cheese.
Bake 45–50 minutes until deep golden and bubbling.
Rest at least 30 minutes before cutting.
Notes
Make ahead: assemble a day ahead, refrigerate and bake from cold for 60–70 minutes.
Meat sauce keeps 3 days in the fridge or 3 months frozen.
Vegetarian: replace the meat with cooked brown lentils and mushrooms.
Leftovers keep 4 days. Baked moussaka freezes for 3 months.