01 - Preheat oven to 350°F.
02 - Heat olive oil in a large skillet over medium heat. Add onion and cook until translucent, about 5 minutes. Add garlic and cook for 1 minute.
03 - Add ground beef to the skillet. Cook, breaking it up with a spoon, until browned.
04 - Stir in crushed tomatoes, tomato paste, oregano, basil, salt, pepper, sugar, and water. Simmer uncovered for 20 to 25 minutes, stirring occasionally, until thickened.
05 - Melt butter in a saucepan over medium heat. Whisk in flour and cook for 1 to 2 minutes without browning.
06 - Gradually add warmed milk, whisking constantly to prevent lumps. Cook, stirring, until thickened, about 5 to 7 minutes.
07 - Stir in nutmeg, salt, and white pepper. Remove from heat.
08 - Cook lasagna noodles according to package instructions if not using no-boil noodles. Drain and set aside.
09 - Spread a thin layer of meat sauce in the bottom of a 9x13 inch baking dish. Arrange a layer of noodles over the sauce.
10 - Top with ⅓ of the meat sauce, ⅓ of the béchamel sauce, and sprinkle with mozzarella and Parmesan. Repeat layers twice more, finishing with béchamel and cheese on top.
11 - Cover with foil and bake for 30 minutes.
12 - Remove foil and bake an additional 15 to 20 minutes, until golden and bubbling.
13 - Let stand 15 minutes before slicing and serving.