Prepare the meat: Heat the olive oil in a large pot over medium heat. Add the ground beef and Italian sausage, breaking the meat into small pieces as it browns.
Cook the aromatics: Add the chopped onion and cook for about 4–5 minutes, until softened. Stir in the garlic and cook for another 30–60 seconds.
Make the sauce: Add the crushed tomatoes, tomato sauce, tomato paste, basil, oregano, Italian seasoning, fennel seeds, red pepper flakes, salt, and black pepper.
Simmer slowly: Bring the sauce to a gentle simmer, then reduce the heat. Cook uncovered for 45–60 minutes, stirring occasionally, until the sauce becomes thick and rich.
Mix the ricotta filling: In a bowl, combine the ricotta, egg, Parmesan, parsley, salt, and black pepper. Stir until smooth and evenly combined.
Cook the noodles: Boil the lasagna noodles in salted water according to the package directions. Cook them to al dente, then drain and lay them flat so they do not stick together.
Preheat the oven: Set the oven to 375°F (190°C) and lightly grease a deep 9 × 13-inch baking dish.
Start the first layer: Spread a thin layer of meat sauce over the bottom of the baking dish.
Add the noodles: Place a layer of cooked lasagna noodles over the sauce.
Add the filling: Spread some of the ricotta mixture over the noodles, followed by meat sauce, mozzarella, and a little Parmesan.
Repeat the layers: Continue layering noodles, ricotta, meat sauce, mozzarella, and Parmesan until the ingredients are used.
Finish the top: End with meat sauce, then cover it generously with mozzarella and Parmesan.
Cover and bake: Loosely cover the dish with foil and bake for 25 minutes.
Brown the cheese: Remove the foil and continue baking for another 20–25 minutes, until the edges are bubbling and the cheese is melted and lightly golden.
Rest before slicing: Remove the lasagna from the oven and let it rest for 15–20 minutes. This helps the layers settle so the slices hold together better.