Heat 2 tbsp of the olive oil in a saucepan over a low heat. Add the onion and garlic and gently fry until soft. Add the cinnamon and allspice and continue to fry for 2 minutes, before mixing in the minced lamb. Increase the heat slightly and stir-fry the meat briskly until it separates into small granules and turns brown. Add the wine, tomatoes, lemon zest, parsley and oregano and bring to the boil. Adjust the seasoning and reduce the heat so the meat gently simmers. Cook for 30 minutes or until rich and thick, then beat in the Parmesan and adjust the seasoning.
Preheat the oven to 190°C/gas 5. Make the white sauce: put the milk, bay leaf and peppercorns into a saucepan. Set over a low heat, and 'scald' the milk by bringing it up to boiling point then removing from the heat. Cover the pan and leave to infuse for 20 minutes.
While the milk is infusing, top and tail the aubergines and cut them lengthways into slices about 7.5mm thick. Pour a little of the remaining olive oil into a non-stick frying pan and set over a medium-high heat. Once hot, add a single layer of aubergine slices and fry briskly until pale gold on both sides. As they cook, they will begin to release some of the oil they initially absorbed. Transfer to a plate lined with kitchen paper and gently pat with extra paper to soak up some of the excess oil. Repeat the process with the remaining aubergine and oil, then lightly season the aubergine slices.
Finish the white sauce by melting the butter in a saucepan over a low heat. Stir in the flour, to make a roux, and cook for about 3 minutes. This might seem a lot of butter and flour but you are making a thick, yet light topping. Strain the flavoured milk and, using a wooden spoon, slowly stir it into the roux, only adding more milk after it has been smoothly absorbed into the roux. You will end up with a thick sauce. Simmer over a very low heat for 5 minutes, stirring regularly. Then remove from the heat and beat in the two egg yolks. Add salt to taste.
Line the bottom of your baking dish with half the aubergine slices. Cover with the meat, followed by the remaining aubergine. Then evenly spread the warm white sauce over the top and scatter with the final 30g Parmesan. Bake in the oven for 40 minutes or until the topping has formed a thick, golden crust. Leave to stand for 5 minutes before serving in slices. If you're making the dish in advance, leave the uncooked moussaka to cool, then cover and chill until needed. You'll need to bake the chilled moussaka for 40 minutes covered with foil, then for a further 20 minutes uncovered.