Cook shells 2 minutes less than package directions until al dente and drain.
Microwave spinach in bag as per instructions. Let cool, squeeze out as much water as possible and chop and set aside.
Heat olive oil in a skillet over medium high. Remove sausage from casings and cook, breaking up with a wooden spoon into small crumbles, about 5 minutes. Remove from skillet and drain on a plate lined with paper towels until slightly cooled and set aside.
Add butter to skillet and melt. Add onions and cook, stirring for about 5 minutes until softened. Add garlic and cook an additional minute.
Stir in tomatoes and season with salt and pepper to taste. Turn heat to low and let the sauce simmer for 15 minutes. Stir in heavy cream and cook an additional 5 minutes.
Preheat oven to 350 degrees. Pour 1 cup of sauce on the bottom of a 9x13 baking dish.
Combine ricotta, egg, 1 cup of mozzarella and parmesan. Stir in cooked spinach and sausage.
Stuff each shell with about 2 tablespoons of the ricotta mixture and arrange on top of the sauce in the baking pan. Pour remaining sauce over the shells and top with remaining cup of shredded mozzarella cheese.
Cover with foil and bake 25 minutes. Remove foil and bake an additional 10 minutes.