Preheat oven to 350°F In a large pot, heat oil over medium heat until shimmering. Add onion and saute until soft, 5 minutes. Add meats and saute until no longer pink, about 10 minutes, breaking it up into small pieces with the edge of a spoon. Add wine and cook 2 minutes to boil off some of the alcohol. Add garlic, cinnamon, oregano and thyme; cook 5 minutes. Add tomatoes (with their juices), salt and pepper; bring to a boil, reduce to a simmer and cook, uncovered, 45 minutes, stirring occasionally.
In a medium saucepan, combine milk and cream. Heat to a bare simmer over medium-low heat.
In another saucepan, melt butter. Whisk in flour and cook until pasty flavor is gone but roux is still pale, 2-3 minutes. Whisking constantly, add hot milk/cream. Cook 5 minutes, still whisking constantly, until thick and smooth. Remove from heat and add nutmeg, salt, white pepper, half the Parmesan, and 1/2 cup of meat sauce. Set aside to cool 10 minutes. Beat eggs lightly, then whisk yogurt into eggs. Whisk this mixture into cooled white sauce.
Cook and drain pasta according to package directions.
Combine pasta with meat sauce and pour into a large casserole dish. Pour white sauce evenly over the top, then sprinkle evenly with remaining Parmesan. Bake, uncovered, in preheated oven for 1 hour. Cool 10 minutes before serving. (Tastes even better the second day when the flavors have time to meld; reheat from room temperature in 350F oven for 15-20 minutes.).