In a large pot, bring 4-6 quarts of water to a boil. Salt the water (should taste like seawater)
Preheat oven to 375 degrees. Pour the chopped tomatoes into a 9x9 baking dish, and place in the preheating oven to warm up (this will allow the final dish to heat faster)
Add shells to the boiling salted water, stirring occasionally, until al dente, about 9 minutes; drain. Run under cold water to stop the cooking; drain again.
Meanwhile, heat oil in a large pan over medium heat. Add onions and cook, stirring occasionally, until translucent, about 4-5 minutes. season with salt and pepper.
Add garlic and cook, stirring until fragrant about 15-30 seconds. Add spinach, cover, and cook until beginning to wilt, about 2 minutes. Uncover and continue to cook, stirring occasionally, until spinach is completely wilted and most of the liquid has evaporated, about another 4 minutes more. Season with salt and pepper to taste. Transfer spinach mixture to a large bowl.
To the bowl of wilted spinach, add ricotta, mozzarella, parmesan, and egg. mix to combine. Season with salt and pepper.
Stuff shells with the spinach and cheese mixture. The shell should be filled to capacity but not overstuffed.
Nestle stuffed shells into the baking dish with heated tomatoes. As you add the shells, spoon some of the hot tomatoes over the top.
Bake, uncovered, about 15-20 minutes, or until warmed through.
Serve, with basil and extra Parmesan cheese (if desired)
Notes
To save time, be sure to start on the the filling while you are getting the water to boil.