Prepare the Tomato Sauce:
In a large saucepan, heat the olive oil over medium heat.
Add the diced onion and sauté for 5-7 minutes, until translucent.
Add the minced garlic and cook for an additional 1-2 minutes, until fragrant.
Stir in the canned crushed tomatoes, tomato paste, dried oregano, dried basil, salt, and black pepper.
Bring the sauce to a simmer and let it cook for 20-25 minutes, stirring occasionally, until thickened.
Prepare the Bechamel Sauce:
In a medium saucepan, melt the butter over medium heat.
Whisk in the all-purpose flour and cook for 2-3 minutes, stirring constantly, to create a roux.
Gradually pour in the warm milk, whisking continuously to prevent lumps from forming.
Bring the sauce to a simmer and cook, stirring occasionally, until it thickens to a creamy consistency, about 10-15 minutes.
Remove from heat and stir in the ground nutmeg and salt.
Assemble the Lasagna:
Preheat your oven to 180°C.
Grease a 9x13-inch baking dish with non-stick cooking spray.
Spread a thin layer of the tomato sauce in the bottom of the prepared baking dish.
Arrange 4 lasagna noodles in a single layer over the sauce.
Spread half of the ground beef or lamb over the noodles, then top with a layer of bechamel sauce.
Sprinkle with 1/3 of the Parmesan and mozzarella cheeses.
Repeat the layers of noodles, meat, bechamel, and cheese two more times, ending with the remaining noodles, tomato sauce, and cheese.
Bake the Lasagna:
Cover the lasagna with aluminum foil and bake for 30-40 minutes.
Remove the foil and bake for an additional 10-15 minutes, or until the top is golden brown and the cheese is melted and bubbly.
Let the lasagna rest for 10-15 minutes before slicing and serving.