Preheat oven to 350°F.
Bring a pot of salted water to boil and cook pasta 4 minutes less than the instructions on the box. (The shells will continue to cook in the oven.) Drain the noodles and let them cool enough to touch.
In a medium bowl, combine ricotta cheese, mozzarella cheese, parmesan cheese, romano cheese, cream cheese, garlic, salt, pepper, and basil.
Add mixture to a piping bag (or a zipped plastic bag).
Once noodles are cooled, use the piping bag to fill the individual noodles with the filling. Set aside.
In a large saucepan over medium heat, add butter. Once the butter has melted, add onions and cook until translucent and fragrant (about 5 minutes).
Add garlic and cook 1 more minute.
Add sun-dried tomatoes, oregano, paprika, salt, and pepper. Stir to combine.
Add flour and cook 1-2 more minutes. (The mixture will thicken.)
Add broth, and stir, using a wooden spoon. Scrape the brown bits off the bottom of the pan.
Add heavy cream, spinach, and parmesan cheese. Continue cooking until the spinach is wilted, or about 3-5 minutes.
To a 12-inch cast-iron (or oven-safe) skillet, add 1 cup of the sauce.
Top the sauce with an even layer of the stuffed noodles.
Cover the pasta with the remaining sauce and top with mozzarella cheese. (Make sure the shells are completely coated with the sauce to prevent the pasta from getting crunchy.)
Bake for 10 minutes. Then, broil the shells for 2-3 minutes (watching carefully), or until the cheese is golden brown and bubbly.
Serve garnished with fresh basil.
