Heat the olive oil in a large skillet over medium heat.
Add the chopped onion and minced garlic, and cook until the onion is translucent.
Add the ground beef or lamb and cook until browned. Drain any excess fat.
Stir in the chopped tomatoes, tomato paste, red wine, ground cinnamon, ground allspice, dried oregano, bay leaf, salt, and pepper.
Simmer the sauce for about 30 minutes, stirring occasionally, until it thickens. Remove the bay leaf and set aside.
In a medium saucepan, heat the milk over medium heat until warm.
In another saucepan, melt the butter over medium heat. Add the flour and cook, stirring constantly, for about 2 minutes to form a roux.
Gradually whisk in the warm milk until smooth and thickened.
Remove from heat and stir in the ground nutmeg, salt, and pepper.
Allow the sauce to cool slightly, then whisk in the lightly beaten eggs.
Cook the pasta according to the package instructions until al dente. Drain and return to the pot.
Stir in the grated Parmesan cheese, lightly beaten eggs, and olive oil. Mix well to combine.
Preheat your oven to 180°C (350°F).
Grease a large baking dish with olive oil.
Spread half of the pasta mixture evenly in the baking dish.
Pour the meat sauce over the pasta, spreading it out evenly.
Add the remaining pasta mixture on top of the meat sauce, spreading it out evenly.
Pour the bechamel sauce over the top layer of pasta, spreading it out evenly with a spatula.
Bake the pastitsio in the preheated oven for about 45-50 minutes, or until the top is golden brown and the bechamel sauce is set.
Let the pastitsio cool for about 10-15 minutes before serving to allow it to set.
Enjoy your meal!