In a large skillet over medium heat, place in the olive oil. Then, add in the garlic and red pepper flakes. Let garlic cook for 30 seconds and then add in the red onions. Let onions cook for 2 minutes and then add in the canned tomatoes, oregano, basil and season with salt and pepper. Stir to combine and then let cook, stirring occasionally, until the sauce is fully reduced, about 15 minutes. The sauce should have no excess liquid, almost to the point where it sticks to the bottom of the pan. This is important to avoid a watery lasagna at the end.
While the sauce reduces, place a large skillet over medium heat and add in the spinach. Cook until completely wilted and set aside in a plate. Then, cook the zucchini noodles for 2 minutes, tossing frequently. Place the cooked noodles in a colander and pat dry to remove as much moisture as possible. Set aside once done.
While the sauce is still cooking, add the ricotta, parmesan and egg to a bowl. Whisk together and set aside.
Once the sauce is done, gather all of your prepared ingredients. Take out a casserole dish (I use 4.2 quart) and add a layer of the tomato sauce to the bottom. Then, add a layer of zucchini noodles. Then, add a layer of the ricotta mixture. Then, add in a layer of
tomato sauce. Then, add in a layer of spinach, using all of the spinach. Then, add a layer of the ricotta mixture. Then, add in a layer of zucchini noodles. Then, add in the last of the tomato sauce, in a layer. Then, top with all of the mozzarella cheese.
Cover the casserole dish with tinfoil and bake in the oven for 40 minutes. After 40 minutes, take the dish out of the oven, remove the tinfoil top and let rest for 5-10 minutes. After resting, carefully and slowly pour out as much excess liquid as possible. Then, carefully cut the lasagna into 6 equal portions. Remove these portions and plate immediately or save in individual containers in the refrigerator (or freezer). This is very important to avoid excess moisture. Enjoy immediately!