Prepare the sauce: chop onion and saute in olive oil until golden brown. Puree the tomatoes and add to onions, with salt and pepper. Cook on low heat, uncovered for 1 hour until reduced.
Prepare the ricotta mixture: In a large bowl, mix eggs into ricotta, add 3/4 of the mozzarella, the parmigiano and the salt and pepper.
Assemble the lasagna: In plenty of salted water, cook the lasagna for 1/2 of the suggested package cooking time (about 4 or 5 minutes), drain and set aside. Coat the bottom of a bake-proof pan (9 x 11 or other similar size at least 3″ deep) with a little olive oil, and then cover with 3/4 cup of sauce. Then start layering: a layer of lasagna (slightly overlapping), a layer of the ricotta mixture, about 1/3 of the spinach; 3/4 cup of sauce. Repeat layers until you reach the the top of the pan. (Depending on the depth and size of the pan, you may have left over lasagna, or you can make more layers with slightly less filling between layers.) Cover top with a layer of lasagna, and 3/4 cup of the sauce, the remaining mozzarella and a generous sprinkle of parmigiano. Cover with aluminum foil and cook at 350 for 30 minutes. Remove foil and cook for 10-15 more minutes until top is browned. Remove from oven and let rest for 10 minutes before serving.