Prep the zucchini “noodles.” Trim ends and slice zucchini lengthwise into 1/8- to 1/4-inch sheets using a mandoline or sharp knife. Lay slices on paper towels, sprinkle both sides with salt, and let them sit for 15–20 minutes to draw out moisture. Pat dry well.
Optional pre-bake for firmer layers. Arrange zucchini slices on two lined baking sheets, brush lightly with olive oil, and bake at 400°F (200°C) for 8–10 minutes to reduce moisture.
Pat dry again if beads of water appear. This step helps prevent a watery lasagna.
Cook the beef. Heat 1 tablespoon olive oil in a large skillet over medium heat. Sauté the onion for 3–4 minutes until soft.
Add garlic and cook 30 seconds. Add ground beef, season with salt and pepper, and cook until browned, breaking it up as it cooks. Drain excess fat if needed.
Make the meat sauce. Stir in the marinara, oregano, basil, and red pepper flakes.
Simmer on low for 5–7 minutes to thicken slightly. Taste and adjust seasoning. You want a rich, savory sauce that isn’t too runny.
Mix the ricotta layer. In a bowl, combine ricotta, egg, half the Parmesan, a pinch of salt, and black pepper.
Stir until smooth.
Assemble. Lightly oil a 9x13-inch baking dish. Spoon a thin layer of meat sauce to coat the bottom. Add a layer of zucchini slices, slightly overlapping.
Spread a third of the ricotta mixture on top, then a layer of meat sauce, and a light sprinkle of mozzarella. Repeat layers two more times. Finish with remaining mozzarella and the rest of the Parmesan.
Bake. Cover loosely with foil (tent it so cheese doesn’t stick) and bake at 375°F (190°C) for 25 minutes.
Remove foil and bake another 15–20 minutes, until bubbly and browned on top.
Rest and serve. Let the lasagna rest for at least 10–15 minutes before slicing. This helps it set and gives you clean layers. Garnish with fresh basil or parsley.