Preheat your oven to 350-F and spray a 9x13 inch baking dish with nonstick cooking spray.
Cook the pasta according to the package directions, but cook the noodles 2 minutes less so they’re quite al dente.
Drain and toss the hot pasta with 2 tablespoons of butter and ½ cup Parmesan cheese. Mix well and set aside.
Spread the pasta in the bottom of your prepared baking dish, pressing it down lightly so it’s in an even layer.
Cook the ground beef and onion in a large skillet, breaking up the beef as it cooks, until the beef is cooked and the onions are soft. About 8 minutes.
Add the garlic and cook for an additional 2 minutes, then stir in the tomato paste, 1 teaspoon of salt, pepper and cinnamon.
Transfer the ground beef mixture over the pasta so it’s in an even layer. Press it down gently. Sprinkle with ½ cup of Parmesan cheese.
Heat the milk in the microwave until it is hot but not boiling.
Melt the butter in a large saucepan, then stir in the flour and let it cook for 1 minute over medium heat.
Whisk in about half of the hot milk in a steady stream. Whisk it until it is a thick and smooth paste, then add the remaining milk in a stream while whisking to avoid lumps.
Cook, while whisking, over medium heat until thick and starting to bubble.
Season the bechamel sauce with salt and white pepper. Remove from the heat.
Whisk the eggs in a medium-sized bowl, then add about ½ cup of hot bechamel sauce to the eggs while whisking. This tempers the eggs so they don’t cook when combining them in the sauce.
Whisk the tempered eggs and sauce back into the remaining bechamel sauce and whisk well.
Spoon the sauce over the meat mixture, then sprinkle with the remaining ½ cup of Parmesan cheese.
Cover and bake at 350-F for 20 minutes, then remove the lid and bake for an additional 40 minutes, uncovered, until golden brown and bubbling.