Heat olive oil in a large skillet or Dutch oven over medium heat. Add the diced onion and cook for 4-5 minutes, until softened.
Add the garlic and cook for 1 minute.
Add the ground beef and cook for 7-8 minutes, breaking it apart as it cooks, until browned. Drain excess grease if needed.
Stir in the tomato paste and cook for 1-2 minutes.
Pour in the red wine and simmer for 2-3 minutes, scraping the bottom of the skillet.
Add the crushed tomatoes, beef broth, bay leaf, cinnamon, allspice, oregano, salt, and pepper.
Reduce the heat to low and simmer uncovered for 25-30 minutes, stirring occasionally, until thick. Remove the bay leaf.
Bring a large pot of salted water to a boil. Cook the pasta 2 minutes less than the package directions. Drain and return it to the pot.
Toss the pasta with melted butter and let it cool for 5-10 minutes.
Add the beaten eggs and grated cheese to the pasta. Toss until evenly coated.
Melt butter in a large saucepan over medium heat. Add the flour and whisk until smooth. Cook for 2 minutes.
Slowly pour in the warm milk, whisking constantly. Cook for 6-8 minutes, until thickened.
Remove from the heat. Whisk the egg yolks in a small bowl. Slowly whisk a few spoonfuls of warm sauce into the yolks, then whisk the yolk mixture back into the béchamel.
Stir in the cheese, nutmeg, salt, and white pepper.
Preheat the oven to 350°F. Grease a 9 inch by 13 inch baking dish.
Spread the pasta mixture evenly into the bottom of the baking dish.
Spoon the meat sauce over the pasta and spread it into an even layer.
Pour the béchamel over the meat sauce and smooth the top.
Sprinkle the remaining grated cheese on top.
Bake for 45-50 minutes, until golden on top and bubbling around the edges.
Let the pastitsio rest for 20-30 minutes before slicing and serving.