Heat 1 1/2 tbsp olive oil in a broad, heavy-bottomed pan until hot, then fry the lamb until golden brown all over, about 10 mins (it’s important that the oil is hot, otherwise you’ll end up steaming the lamb instead of frying it). Remove with a slotted spoon and set aside in a large bowl. Pour off all but 2 tbsp oil in the pan (the lamb will release quite a bit). Heat this and fry the onions over a medium heat until soft and golden. Add the garlic and cook for another few mins, then add the tomatoes, bay, cinnamon, oregano, sugar and seasoning. Bring to the boil, then turn down to a simmer. Return the meat to the pan, cover and cook for 40 mins over a low heat. Take off the lid and cook until you have a thick sauce (it shouldn’t be too ‘soupy’).
While the meat is cooking, cut the aubergines into rounds. Cut the potatoes into thin slices. Heat 2 tbsp olive oil in a frying pan and cook the aubergine in batches until golden on both sides (get two pans on the go if you have them), then turn down the heat and cook until soft. Season and remove from the pan. Add a little more oil and cook the potatoes in batches, on both sides, until pale gold, removing them as you go. You’ll need to add more oil to the pan when you fry each batch. Season and set aside.
Fry the artichoke hearts in olive oil over a high heat to get some colour, but be careful that they don’t fall apart. Season.
Remove the bay leaves and cinnamon stick from the meat and taste for seasoning. Layer up the moussaka in a dish measuring roughly 32 x 23 x 6cm. Start by putting all the potatoes in the bottom, then add half the meat. Arrange a layer of aubergine on top of this, then the rest of the meat. Spoon the artichoke hearts on top.
Heat oven to 200C/180C fan/ gas 6. To make the sauce, melt the butter in a heavy-bottomed pan and stir in the flour until it becomes slightly dry and sandy in colour. Take off the heat and start to add the milk, a little at a time. Beat well after each addition and keep the mixture smooth. Keep adding until you have used up all the milk. Put the pan back on a medium heat and bring to the boil, stirring continuously, until it thickens to form a sauce. Add lots of nutmeg, salt and pepper. Turn down the heat and cook gently for about 5 mins – this just helps to cook the flour in the sauce. Add three-quarters of the cheese and stir to help it to melt. Check the seasoning – it needs assertive seasoning. Leave to cool a little, then beat in the eggs.
Pour this over the layers in the dish and scatter the remaining cheese on top. Bake in the oven for 30 mins until the top is brown and bubbling. Leave to cool for about 10 mins – Greeks never eat it piping hot – then serve.