For the Tomato Sauce:
3 tablespoons good olive oil
1 1/2 cups chopped yellow onion (1 large)
1 pound vegetarian ground crumble
1/2 cup dry red wine
1 tablespoon minced garlic (3 large cloves)
1 tablespoon ground cinnamon
1 teaspoon dried oregano
1 teaspoon fresh thyme leaves
Pinch of cayenne pepper
1 can (28 ounces) crushed tomatoes in puree
Kosher salt and freshly ground black pepper
For the Bechamel:
1 1/2 cups whole milk
1 cup heavy cream
4 tablespoons (1/2 stick) unsalted butter
1/4 cup all-purpose flour
1/4 teaspoon freshly grated nutmeg
Salt and freshly ground black pepper
1 1/2 cups freshly grated Parmesan or Kasseri cheese
2 extra-large eggs, beaten
2/3 cup Greek-style yogurt, such as Fage Total
3/4 pound small shells
For the sauce, heat the olive oil over medium-high heat in a large pot. Add the onion and saute for 5 minutes. Add the beef and lamb, and saute over medium heat for 8 to 10 minutes, until it’s no longer pink, crumbling it with the back of wooden spoon. Drain off any excess liquid, add the wine, and cook for 2 more minutes. Add the garlic, cinnamon, oregano, thyme, and cayenne, and continue cooking over medium heat for 5 minutes. Add the tomatoes, 2 teaspoons salt, and 1 teaspoon pepper and simmer, stirring occasionally, for 40 to 45 minutes. Set aside.
Preheat the oven to 350 degrees F.
For the bechamel, heat the milk and cream together in a small saucepan over medium-low heat until simmering. In a medium saucepan, melt the butter. Add the flour and cook over medium heat, whisking constantly for 2 minutes. Pour the warm milk and cream mixture into the butter and flour mixture, whisking constantly. Continue cooking, stirring occasionally, over medium heat for 5 to 7 minutes, until smooth and thick. Add the nutmeg, 1 teaspoon salt, and 1 teaspoon of pepper. Stir in 3/4 cup of Parmesan cheese, 1/2 cup of the tomato and meat sauce, and allow to cool for 10 minutes. Stir in the eggs and yogurt and set aside.
Meanwhile, cook the pasta in a large pot of boiling water until al dente. Don’t over-cook because the pasta will later be baked. Drain and set aside.
Add the pasta to the meat and tomato sauce, and pour the mixture into a baking dish. Spread the bechamel evenly to cover the pasta and sprinkle with the remaining 3/4 cup Parmesan cheese. Bake for 1/2 hour, until golden brown and bubbly. Set aside for 10 minutes and serve hot.