Melt the butter in a large skillet over medium heat. Add the onion and cook until starting to caramelize. Meanwhile, wash and roughly chop the spinach. Add spinach to the skillet a few handfuls at a time, stirring frequently. Cook until the water from the spinach has evaporated and the mixture is thick. Set mixture aside to cool.
Scramble the eggs in a large bowl with salt and pepper. Add ricotta, 12oz of mozzarella and 4oz of parmesan to the eggs, stirring to combine. Add cooled spinach mixture and mix thoroughly. Reserve remaining cheese to top the baking dish once your pasta is assembled.
Your filling is now complete - use in any lasagna, stuffed shells, or manicotti.
If you’re making stuffed shells, boil pasta according to package directions, undercooking by a few minutes. Drain pasta and stuff with the cheese mixture. Cover the bottom of your baking dish with tomato sauce and arrange the stuffed shells in the dish. Spoon remaining sauce over the shells and top with reserved shredded cheeses. Bake at 350º for 30-45 minutes, or until bubbly and the cheese starts to brown.