Heat the oven to 375°F and grease a 9-by-13-inch dish. Boil the penne 2 minutes short of done and drain.
Brown the beef and onion, drain, then add garlic and tomato paste for 1 minute. Stir in tomatoes, cinnamon, oregano, 1 teaspoon salt and pepper and simmer 8 minutes.
Melt butter in a saucepan, stir in flour for 1 minute and gradually whisk in milk and remaining salt. Simmer until thick. Cool 5 minutes, then whisk in eggs and 1 cup Parmesan.
Toss the pasta with beef sauce and spread in the dish. Pour the béchamel evenly over it and sprinkle with remaining Parmesan.
Bake for 40 to 45 minutes until golden and set. Rest 15 minutes before cutting.