Prep the oven and pan: Preheat the oven to 375°F (190°C). Lightly grease a 9x13-inch baking dish.
Sauté the aromatics: Heat olive oil in a large skillet over medium heat.
Add onion with a pinch of salt and cook until soft, about 5 minutes. Stir in garlic and cook 30 seconds until fragrant.
Cook the mushrooms: Add mushrooms, season with salt and pepper, and cook until they release their moisture and brown, 7–9 minutes. Don’t rush this step—browning builds flavor.
Wilt the spinach: Add fresh spinach in batches, tossing until wilted.
If using frozen, squeeze out excess water and stir in. Sprinkle in Italian seasoning and red pepper flakes. Taste and adjust salt and pepper.
Remove from heat.
Mix the ricotta layer: In a bowl, combine ricotta, egg, 1 cup mozzarella, Parmesan, and chopped basil or parsley. Season with a little salt and pepper.
Start layering: Spread 1 cup of marinara in the bottom of the baking dish. Lay down a single layer of noodles.
Add fillings: Spread one-third of the ricotta mixture over the noodles.
Spoon one-third of the mushroom-spinach mixture on top. Drizzle with about 3/4 cup marinara. Sprinkle with a handful of mozzarella.
Repeat layers: Add another layer of noodles and repeat the ricotta, vegetables, sauce, and cheese.
Do this for three total layers (or until you run out), finishing with noodles and all remaining marinara.
Top with cheese: Sprinkle the remaining mozzarella plus a little extra Parmesan over the top layer of sauce.
Cover and bake: Cover the dish tightly with foil (tent it so it doesn’t stick to the cheese). Bake for 25 minutes.
Uncover and finish: Remove the foil and bake another 15–20 minutes, until the top is browned and bubbling and a knife slides in easily.
Rest before slicing: Let the lasagna rest for 10–15 minutes. This helps it set for clean slices.
Garnish and serve: Sprinkle with more fresh herbs and Parmesan if you like.
Serve with a crisp salad or garlic bread.