Lavez les aubergines et coupez-les en tranches d'un centimètre. Salez les tranches et laissez-les dégorger pendant 30 minutes.
Dans une poêle, faites chauffer l'huile d'olive et faites revenir les oignons et l'ail hachés jusqu'à ce qu'ils soient dorés.
Ajoutez la viande hachée et faites cuire jusqu'à ce qu'elle soit bien dorée. Incorporez les tomates coupées, la sauce tomate, la cannelle, l'origan, le sel et le poivre. Laissez mijoter pendant 15 minutes.
Rincez les tranches d'aubergine et séchez-les avec du papier absorbant. Faites-les griller à la poêle ou au four pour réduire leur humidité.
Dans une casserole, faites fondre le beurre, ajoutez la farine et mélangez bien. Versez le lait progressivement en remuant jusqu'à l'obtention d'une sauce béchamel épaisse. Retirez du feu et incorporez l'œuf battu.
Dans un plat allant au four, disposez une couche d'aubergines, puis une couche de mélange de viande, et enfin une couche de béchamel. Répétez l'opération jusqu'à épuisement des ingrédients.
Terminez par une couche de béchamel et parsemez de fromage râpé.
Enfournez pour 45 minutes, jusqu'à ce que le dessus soit doré et gratiné.