Stuffed shells are what I make when I need a meatless dinner that nobody at the table will pick at. The formula is simple — big pasta shells, a creamy ricotta filling sharpened with lemon and garlic, a good jar of marinara, and mozzarella on top — but the result tastes like you planned it all day. It’s also one of the most make-ahead-friendly dinners I know: assemble it in the morning, or even the day before, and slide it into the oven when people start asking what’s for dinner.
The filling is where most stuffed shells go wrong. Ricotta on its own can be bland and watery, and raw spinach releases a puddle of liquid as it bakes. This recipe fixes both problems. The spinach is wilted first and squeezed properly dry, the ricotta gets lemon zest, garlic, and plenty of Parmesan, and a beaten egg binds everything so the filling stays creamy instead of soupy. What comes out of the oven is a bubbling, golden-topped dish with shells that hold their shape when you serve them.
If you enjoy this style of Italian comfort food, my Italian meatballs in marinara use the same sauce-and-cheese logic in a meatier form.

Why You’ll Love This Recipe
- The filling stays put. Squeezed-dry spinach and an egg in the filling mean no watery puddles under the pasta and no filling sliding out of the shells.
- It’s genuinely make-ahead. Assemble the whole dish, cover, and refrigerate for up to 24 hours, or freeze it unbaked for up to 2 months.
- Jarred sauce, zero shame. A good store-bought marinara is the right call on a weeknight. Dressing it up is optional; the cheese and lemon do the heavy lifting.
- Leftovers reheat well. The shells stay intact and the filling stays creamy, so lunch the next day is something to look forward to.
Ingredients
For the pasta and sauce
- 24 jumbo pasta shells (about 8 ounces; cook a few extra in case some tear)
- 1 jar (24 ounces) marinara sauce, or 3 cups homemade
- 1 tablespoon olive oil
- 2 cloves garlic, thinly sliced (optional, to wake up jarred sauce)
- 1 1/2 cups (6 ounces) shredded low-moisture mozzarella
- 1/4 cup grated Parmesan, for the top
- Torn fresh basil, for serving
For the spinach-ricotta filling
- 10 ounces fresh spinach (or frozen, thawed)
- 15 ounces whole-milk ricotta
- 1 large egg, lightly beaten
- 3/4 cup finely grated Parmesan
- 1 teaspoon lemon zest
- 1 tablespoon lemon juice
- 2 cloves garlic, grated or minced
- 1/2 teaspoon kosher salt
- 1/4 teaspoon black pepper
- 1/4 teaspoon ground nutmeg (a classic with spinach and ricotta)
- Pinch of red pepper flakes

Instructions
- Cook the shells. Bring a large pot of well-salted water to a boil. Cook the shells 2 minutes shy of the package directions for al dente — they will finish in the oven, and slightly firm shells are far easier to fill without tearing. Drain, rinse briefly under cool water to stop the cooking, and lay them out in a single layer on an oiled baking sheet so they don’t stick together.
- Wilt and squeeze the spinach. Put the fresh spinach in a large dry skillet over medium heat with a splash of water. Cook, tossing, just until wilted, 2 to 3 minutes. Transfer to a colander and let cool until you can handle it, then squeeze it hard over the sink — a handful at a time, or wrapped in a clean kitchen towel — until it feels dry and dense. Chop it roughly. You should get about 1 packed cup. (For frozen spinach, thaw, then squeeze the same way.)
- Mix the filling. In a large bowl, stir together the ricotta, egg, Parmesan, lemon zest and juice, garlic, salt, pepper, nutmeg, and red pepper flakes. Fold in the chopped spinach until evenly distributed. Taste and adjust the salt — the filling should taste well-seasoned on its own.
- Heat the oven and prep the dish. Preheat to 375°F (190°C). If your marinara is straight from a jar and you want to freshen it, warm the olive oil and sliced garlic in a small pan for 1 minute, stir in the sauce, and simmer 5 minutes. Spread 1 cup of sauce over the bottom of a 9×13-inch baking dish — a sauced bottom keeps the shells from sticking and drying out.
- Fill the shells. Spoon the filling into a zip-top bag, snip off a corner, and pipe it into each shell (about 2 tablespoons per shell), or simply spoon it in. Arrange the filled shells snugly in the dish, open side up. Nestling them close together helps them stand up and keeps the filling in.
- Sauce, cheese, and bake. Spoon the remaining sauce over the shells, leaving some pasta edges peeking out so they get a little crisp. Sprinkle the mozzarella and the extra Parmesan over the top. Cover the dish with foil and bake for 25 minutes. Uncover and bake 10 to 15 minutes more, until the cheese is melted and lightly golden in spots and the sauce bubbles around the edges.
- Rest and serve. Let the dish rest 5 to 10 minutes before serving — the filling sets slightly and the shells are easier to lift out whole. Shower with torn basil and bring it straight to the table.

Tips for Success
- Squeeze the spinach like you mean it. This is the step that separates great stuffed shells from a watery casserole. When you think you’ve squeezed enough, squeeze once more. You can remove a surprising amount of water.
- Undercook the pasta on purpose. Shells boiled to full tenderness tear when filled and go mushy in the oven. Firm is what you want.
- Whole-milk ricotta only. Part-skim ricotta is grainier and releases more liquid. If your ricotta looks wet, drain it in a fine-mesh strainer for 30 minutes before mixing.
- A piping bag is worth it. Spooning works, but piping fills the shells in half the time with half the mess, and it packs the filling in so there are no air pockets.
Variations
- Sausage and spinach. Brown 8 ounces of Italian sausage and fold it into the filling, or layer it under the shells. This is the version I make when the table includes committed meat-eaters.
- Three-cheese. Add 1 cup of shredded fontina or provolone to the filling for a richer, stretchier result.
- Vodka sauce swap. Replace the marinara with vodka sauce for a pink, slightly richer dish.
- Individual portions. Assemble in small gratin dishes for a dinner party — same bake time, easier serving. If you like the stuffed format, my stuffed bell peppers with beef and rice scratch a similar itch with a different filling.
Storage and Make-Ahead
Assembled but unbaked, the dish keeps covered in the fridge for up to 24 hours; add 5 to 10 minutes to the covered bake time if it goes into the oven cold. To freeze, assemble in a freezer-safe dish, wrap tightly, and freeze up to 2 months. Bake from frozen, covered, at 375°F for about 1 hour, then uncover for the final 15 minutes.
Leftovers keep for 3 to 4 days in the fridge. Reheat individual portions in the microwave with a splash of water and a loose cover, or warm the whole dish at 350°F for 20 minutes. The filling stays creamy either way, which is more than most pasta bakes can claim.
Frequently Asked Questions
Can I use frozen spinach?
Yes — a 10-ounce box of frozen chopped spinach, thawed, works exactly like fresh here. The non-negotiable part is squeezing it completely dry.
My filling was runny. What went wrong?
Either the spinach wasn’t squeezed dry, or the ricotta was wet. Drain wet ricotta in a strainer for 30 minutes next time, and make sure the egg is in the mix — it’s the binder that keeps the filling set.
Can I make this without the egg?
You can, but the filling will be looser. Add 2 extra tablespoons of Parmesan and an extra tablespoon of mozzarella to the filling to help it hold together.
What do I serve with stuffed shells?
A crisp green salad with a sharp vinaigrette and garlic bread for the sauce. The dish is rich, so something fresh and acidic alongside is the right balance.
Recipe Card
- Prep Time: 35 minutes
- Cook Time: 40 minutes
- Total Time: 1 hour 15 minutes, plus resting
- Servings: 6 (about 4 shells each)
Ingredients: Jumbo shells, marinara sauce, mozzarella, Parmesan, ricotta, spinach, egg, lemon zest and juice, garlic, nutmeg, salt, pepper, red pepper flakes, basil, olive oil.
Instructions summary: Boil shells until just shy of al dente. Wilt spinach, squeeze completely dry, and chop. Stir ricotta with egg, Parmesan, lemon, garlic, and spices; fold in spinach. Sauce the bottom of a 9×13 dish, fill shells, arrange snugly, top with sauce and cheeses. Bake covered at 375°F for 25 minutes, uncovered 10–15 more, rest 10 minutes, and serve with basil.











