Heat olive oil in a large skillet or Dutch oven over medium heat. Add the chopped onion and sauté for 5 minutes until soft and translucent, then stir in the minced garlic and cook for 1 minute until fragrant.
Add the ground beef to the skillet. Break it apart with a wooden spoon and cook until fully browned and no pink remains. Drain excess fat if necessary.
Stir in the crushed tomatoes, tomato paste, sugar, salt, pepper, dried oregano, Italian seasoning, and fennel seeds. Pour in the water (or red wine). Reduce heat to low and simmer uncovered for 25–30 minutes, stirring occasionally, until the sauce thickens.
While the sauce simmers, prepare the ricotta filling. In a medium bowl, combine the ricotta cheese, beaten egg, 1/4 cup of the Parmesan cheese, 1 cup of the shredded mozzarella, and a pinch of salt and pepper. Mix until creamy and set aside.
Prepare the Béchamel sauce. Melt the butter in a saucepan over medium heat. Whisk in the flour and cook for 1–2 minutes to remove the raw flour taste (do not brown). Gradually pour in the milk while whisking constantly to prevent lumps. Simmer for 5–7 minutes until thickened enough to coat the back of a spoon. Season with nutmeg, salt, and pepper.
Preheat your oven to 375°F (190°C). If using boil-required noodles, cook them according to package instructions to 'al dente', drain, and lay flat to prevent sticking.
Assemble the lasagna in a 9x13-inch baking dish. Spread a thin layer of meat sauce (about 1 cup) on the bottom to prevent sticking.
Place 3-4 noodles over the sauce. Spread 1/3 of the ricotta mixture over the noodles. Ladle 1/3 of the remaining meat sauce over the ricotta. Drizzle 1/3 of the Béchamel sauce over the meat.
Repeat the layering process (Noodles -> Ricotta -> Meat -> Béchamel) two more times.
Finish by placing the final layer of noodles on top. Cover completely with the remaining meat sauce and sprinkle generously with the remaining 2 cups of mozzarella cheese and remaining Parmesan.
Cover the baking dish loosely with aluminum foil (tent it slightly so it doesn't touch the cheese). Bake for 25 minutes.
Remove the foil and bake for an additional 15–20 minutes, or until the cheese is golden brown and bubbling.
Remove from the oven and let the lasagna rest for at least 15 minutes before slicing. This allows the layers to set and prevents the filling from running.