Preheat the oven: Set to 375°F (190°C).
Lightly spray a 9x13-inch baking dish with olive oil.
Sauté the aromatics: Warm olive oil in a large skillet over medium heat. Add onion and cook 3–4 minutes until softened. Stir in garlic for 30 seconds until fragrant.
Brown the beef: Add lean ground beef, breaking it up with a spatula.
Cook until no longer pink, about 5–6 minutes. Drain any excess fat if needed.
Add vegetables: Stir in zucchini and bell pepper. Cook 4–5 minutes until tender.
Fold in spinach and cook until wilted, 1–2 minutes.
Build the sauce: Add marinara, tomato paste, oregano, basil, and red pepper flakes. Season with salt and black pepper. Simmer 5–8 minutes to thicken slightly.
Taste and adjust seasoning.
Mix the ricotta layer: In a bowl, combine ricotta, egg, Parmesan, garlic powder, a pinch of salt, and black pepper. Stir until smooth.
Prepare the noodles: If using traditional noodles, boil in salted water until just shy of al dente (1–2 minutes less than package). Drain and lay flat on parchment to prevent sticking.
If using no-boil noodles, skip this step.
Assemble the lasagna: Spread a thin layer of meat sauce in the baking dish. Add a layer of noodles. Dollop and spread half the ricotta mixture.
Sprinkle a third of the mozzarella. Spoon over more meat sauce. Repeat layers: noodles, remaining ricotta, another third of mozzarella, more sauce.
Finish with a final layer of noodles, remaining sauce, and the last mozzarella.
Bake: Cover with foil (tent slightly so it doesn’t stick to the cheese). Bake 25 minutes. Remove foil and bake 10–15 minutes more, until bubbling and lightly golden.
Rest and serve: Let the lasagna rest 10–15 minutes to set.
Slice and garnish with fresh basil or parsley.