Cook the lentils in a pot with plenty of water. Once al dente, drain and set aside (soaking them overnight is a good way to get them to cook faster).
If using fresh tomatoes: blanch them in hot water until the skins start to peel. Run under cold water, peel back all the skins and discard. Coarsely blend in a blender and set aside.
Slice the aubergine lengthwise into 1cm slices and lay them on a tray. Brush them with a little oil and fry them on a griddle pan (or regular pan) on both sides until lightly browned and caramelized. Remove and drain on kitchen paper.
Add oil to a pot and sauté the onions and garlic until lightly browned. Tip in the beef and break up any clumps with the back of your ladle or spatula. Move the beef around until it starts to caramelize and brown a little on the outside. Pour in the wine, turn up the heat, and wait for the alcohol to cook off - about 1 minute.
Stir in the oregano, cinnamon powder, chilli powder, paprika, cooked lentils, blended tomatoes, tomato purée, pepper and salt. Clamp on a lid and let it sit on a low flame for 15-20 minutes. Taste and adjust seasoning.
While the beef is cooking, make the béchamel: melt the butter in a saucepan over low heat. Once completely melted, add the flour. Using a whisk, stir the flour and butter together.
Add the milk into the flour mixture in a gentle stream, whisking continuously. You may need to add more milk in order to get the right consistency. Cook for a further 2-3 minutes stirring constantly. Stir in the parmesan, and season with grated nutmeg and salt. Set aside.
To assemble: spoon one-third of the meat sauce into an oven proof dish. Top with a single layer of aubergines. Repeat the layers twice more, finishing with the aubergines. Pour over the béchamel in an even layer. Bake for 40-50 minutes until golden and bubbling.