01 - Set oven to 350°F (180°C).
02 - Heat olive oil in a large skillet over medium heat. Sauté onion for 3 minutes until softened, then add garlic and cook for 1 minute.
03 - Add ground beef, breaking it up with a spoon, and cook until browned, about 5 minutes. Drain excess fat if needed.
04 - Incorporate crushed tomatoes, tomato paste, oregano, basil, salt, black pepper, and beef stock. Simmer uncovered for 15 to 20 minutes, stirring occasionally, until sauce thickens. Remove from heat and set aside.
05 - Melt butter in a saucepan over medium heat. Whisk in flour continuously for 2 minutes to form a roux without browning.
06 - Gradually whisk in warm milk, avoiding lumps. Cook, stirring, until sauce thickens and coats the back of a spoon, approximately 6 to 8 minutes. Remove from heat, then stir in nutmeg, salt, white pepper, and Parmesan cheese until smooth.
07 - Spread a thin layer of meat sauce on the bottom of a 9x13 inch baking dish. Arrange lasagna noodles over sauce, breaking to fit if necessary. Spread one-third of remaining meat sauce, then one-quarter of béchamel. Sprinkle with mozzarella. Repeat layering noodles, meat sauce, béchamel, and mozzarella twice more. Finish with noodles, remaining béchamel, mozzarella, and Parmesan cheese.
08 - Cover dish with aluminum foil and bake for 30 minutes. Remove foil and continue baking for an additional 15 to 20 minutes until bubbly and golden on top.
09 - Allow lasagna to rest for at least 15 minutes before slicing. Garnish with fresh basil leaves if desired.