Bring a large pot of salted water to a boil and cook the penne until just tender. Drain and set aside.
Heat the olive oil in a skillet over medium heat. Add the onion and garlic and cook until soft. Add the ground lamb and cook until browned, breaking it up with a spoon.
Stir in the crushed tomatoes, cinnamon, oregano, salt, and pepper. Simmer for 10 minutes until the sauce thickens slightly. Remove from heat.
In a saucepan, melt the butter over medium heat. Whisk in the flour and cook for one minute. Slowly whisk in the milk and nutmeg until the mixture thickens. Remove from heat.
Whisk the eggs in a small bowl. Stir a spoonful of the warm bechamel into the eggs, then pour the egg mixture back into the saucepan. Stir in half the Parmesan.
Preheat the oven to 350 degrees. Spread half the pasta in a baking dish. Top with the lamb mixture, then the remaining pasta. Pour the bechamel over the top and sprinkle with the rest of the Parmesan.
Bake for 30 minutes until the top is golden. Let the dish rest 10 minutes before cutting into squares.