Heat 2 tbsp olive oil in a large casserole dish. Add the onion and cook gently for 10 minutes or until the onion is soft, but not coloured. Brown half the lamb in a frying pan and add to the onion. Add the garlic and break up the meat with a wooden fork until it has a loose texture. Brown the remaining lamb.
Stir the cinnamon, allspice, chopped tomatoes, oregano, bay leaves and thyme into the casserole. Add the rest of the browned lamb and de-glaze the pan with white wine. Pour straight into the casserole dish, reduce the heat and simmer for approximately 1 hour.
Place the aubergines in a colander, sprinkle with salt and leave for 30 minutes. This draws out any bitter juices.
Meanwhile make the béchamel sauce. Melt the butter in a non-stick pan and stir in the flour. Take off the heat and gradually stir in the milk. Return the pan to the heat and stir continuously until the sauce thickens. Simmer over a gentle heat for 5-8 minutes. Remove from the heat, stir in 55g/2oz of the parmesan and 55g/2oz of the gruyère cheese and season with salt and pepper.
Rinse the aubergines and pat dry. Dust the aubergines with flour and fry in batches in the remaining olive oil until golden on both sides, about 8 - 10 minutes. Drain on kitchen paper. Set aside until ready to construct the moussaka.
The white sauce should now have cooled enough to whisk in the egg and egg yolks.
Cover the base of an ovenproof dish (30 x 20cm/12 x 8in) with a third of the mince then cover with half the aubergine slices. Repeat the layers, ending in the last of the mince, then pour over the cheese sauce. Sprinkle over the remaining parmesan and gruyère. Bake in a preheated oven at 180C/350F/Gas4 for 50-60 minutes, until bubbling and golden. Allow the moussaka to settle for 5 minutes before cutting into squares and serving.
Serve the moussaka with a chunky tomato, cucumber, parsley and mint salad and crusty bread.
This dish can be prepared in advance until the point before it goes in the oven. Allow an extra 15 minutes in the oven if cooking from cold.