For the meat sauce
1 tablespoon vegetable or olive oil
1 medium yellow onion, finely chopped (about 1 1/2 cups)
1 pound ground beef, lamb, pork, or turkey
2 teaspoons kosher salt, divided
1/2 teaspoon freshly ground black pepper, divided
3 cloves garlic, finely chopped
Leaves of 3 sprigs fresh marjoram or oregano, coarsely chopped
Leaves of 3 sprigs fresh thyme, coarsely chopped
1 teaspoon ground cinnamon
1/3 cup red wine
1 pound frozen chopped spinach, thawed and as much liquid as possible squeezed out
1 (28-ounce) can crushed tomatoes
For the sauce and pasta
Cooking spray
8 tablespoons (1 stick) unsalted butter
1 cup all-purpose flour
1 teaspoon freshly ground black pepper
4 1/2 cups whole milk, divided
3 large eggs
2 large egg yolks
Finely grated zest of 3 lemons
2 1/2 teaspoons kosher salt
1/4 teaspoon ground nutmeg or 15 scrapes from a whole nutmeg
2 cups freshly grated Parmesan or Kefalotyri cheese (6 ounces), divided
6 cups cooked ziti, elbow macaroni, orecchiette, or any small pasta (about 12 ounces dried)
Chopped tomatoes, fresh marjoram, fresh thyme, or more Parmesan or Kefalotyri cheese, for serving
Arrange a rack in the middle of the oven and heat to 375°F. Coat a 9x13-inch baking dish (2 1/2 to 3 inches deep, 3-quart capacity) with cooking spray; set aside.
Make the meat sauce: Heat the oil in a large saucepan over high heat until shimmering. Add the onions and cook, stirring frequently, until translucent, 3 to 5 minutes. Reduce the heat to medium-high. Add the ground meat, 1 teaspoon of the salt, and 1/4 teaspoon of the pepper. Cook, stirring occasionally and breaking it up with a heat-resistant spoon, until cooked through and browned, 3 to 4 minutes.
Add the garlic, marjoram, thyme, and cinnamon, stir to combine, and cook for 15 to 20 seconds. Add the wine and cook until almost evaporated, 1 to 2 minutes. Add the spinach, tomatoes, remaining 1 teaspoon salt, and remaining 1/4 teaspoon pepper, and mix to combine. Remove from the heat and set aside.
Make the sauce: Heat the butter in a separate large saucepan over high heat until it melts and foams. Whisk in the flour and cook until it is medium-blonde in color, about 1 minute. Add the pepper and cook, whisking constantly, for 1 minute. Gradually whisk in 4 cups of the milk. Bring the mixture to a boil, stirring constantly, and cook until thickened, about 1 minute. Remove from the heat.
Whisk the eggs, egg yolks, remaining 1/2 cup milk, lemon zest, salt, and nutmeg in a la