Quick Recipe Version (TL;DR)
Quick Ingredients
- 24 jumbo pasta shells (plus a few extra in case some break)
- 1 lb (450 g) lean ground beef
- 1 tbsp olive oil
- 1 small onion, finely diced
- 3 cloves garlic, minced
- 10 oz (280 g) frozen chopped spinach, thawed and squeezed dry
- 15 oz (425 g) whole-milk ricotta cheese
- 1 large egg
- 2 1/2 cups shredded mozzarella cheese, divided
- 3/4 cup grated Parmesan cheese, divided
- 3 cups marinara sauce (about 24 oz)
- 1 1/2 tsp kosher salt, divided, plus more for pasta water
- 1/2 tsp black pepper
- 1 tsp dried Italian seasoning
- Pinch red pepper flakes (optional)
- Fresh basil or parsley, for garnish (optional)
Do This
- 1. Preheat oven to 375°F (190°C). Boil jumbo shells in salted water until just shy of al dente (about 9 minutes). Drain and cool on a tray.
- 2. Sauté onion in olive oil until soft; add garlic and ground beef. Cook until browned. Season with 1/2 tsp salt, pepper, Italian seasoning, and red pepper flakes.
- 3. In a bowl, mix ricotta, egg, spinach, 1 cup mozzarella, 1/2 cup Parmesan, and 1 tsp salt. Fold in cooked beef mixture.
- 4. Spread 1 cup marinara mixed with 1/4 cup water in a 9×13-inch baking dish. Stuff each shell with 2–3 tbsp filling and arrange in the dish.
- 5. Spoon remaining marinara over shells. Top with remaining 1 1/2 cups mozzarella and 1/4 cup Parmesan.
- 6. Cover with foil and bake 25 minutes. Uncover and bake 10–15 minutes more, until bubbly and lightly browned.
- 7. Rest 5–10 minutes. Garnish with chopped basil or parsley and serve hot.
Why You’ll Love This Recipe
- Classic comfort food: tender jumbo shells stuffed with creamy, cheesy beef and spinach, baked in plenty of marinara and melty mozzarella.
- Family-friendly: mild flavors that kids enjoy, with an easy option to add a little spice for the grown-ups.
- Great for make-ahead and freezing: assemble in advance for busy nights or gift to friends and family.
- Flexible: swap in sausage, use different cheeses, or make it extra veggie-forward with simple tweaks.
Grocery List
- Produce: 1 small yellow onion, 3 cloves garlic, 10 oz frozen chopped spinach (or 5 oz fresh baby spinach), fresh basil or parsley (optional garnish)
- Dairy: Whole-milk ricotta (15 oz), shredded mozzarella cheese (at least 2 1/2 cups), grated Parmesan cheese (at least 3/4 cup), 1 large egg
- Pantry: Jumbo pasta shells, marinara sauce (about 24 oz), olive oil, kosher salt, black pepper, dried Italian seasoning, red pepper flakes (optional)
Full Ingredients
Pasta and Baking Dish
- 24–26 jumbo pasta shells (cook a few extra in case some tear)
- Kosher salt, for pasta water
- 1 tsp olive oil (optional, to prevent sticking after boiling)
Beef and Spinach Filling
- 1 tbsp olive oil
- 1 small yellow onion, finely diced (about 1/2 cup)
- 3 cloves garlic, minced
- 1 lb (450 g) lean ground beef
- 1/2 tsp kosher salt (for the beef)
- 1/2 tsp freshly ground black pepper
- 1 tsp dried Italian seasoning
- 1/4 tsp red pepper flakes (optional, for a gentle kick)
- 10 oz (280 g) frozen chopped spinach, thawed and very well squeezed dry
- 15 oz (425 g) whole-milk ricotta cheese
- 1 large egg
- 1 cup (about 4 oz) shredded mozzarella cheese
- 1/2 cup (about 1 1/2 oz) grated Parmesan cheese
- 1 tsp kosher salt (for the cheese mixture)
- Pinch ground nutmeg (optional, classic with spinach and ricotta)
Sauce and Topping
- 3 cups marinara sauce (about 24 oz from a jar or homemade)
- 1/4 cup water
- 1 1/2 cups (about 6 oz) shredded mozzarella cheese
- 1/4 cup (about 3/4 oz) grated Parmesan cheese
- Fresh basil or flat-leaf parsley, chopped, for garnish (optional)

Step-by-Step Instructions
Step 1: Preheat the oven and cook the pasta shells
Preheat your oven to 375°F (190°C). Bring a large pot of water to a rolling boil and season generously with kosher salt (it should taste like the sea). Add the jumbo pasta shells and cook until just shy of al dente, usually about 1–2 minutes less than the package suggests (often around 9 minutes). You want them flexible but still firm, since they will bake further in the oven.
Drain the shells well. If you like, toss them very lightly with 1 tsp olive oil to prevent sticking. Spread them in a single layer on a large baking sheet or tray to cool while you prepare the filling. Try to keep them separated so they do not tear as you fill them later.
Step 2: Sauté the aromatics and brown the beef
While the pasta cooks, heat 1 tbsp olive oil in a large skillet over medium heat. Add the finely diced onion and cook, stirring occasionally, until soft and translucent, about 5–7 minutes. Add the minced garlic and cook for another 30–60 seconds, just until fragrant.
Crumble in the 1 lb ground beef. Cook, breaking it up with a spoon, until no longer pink and lightly browned in spots, about 6–8 minutes. Drain off any excess fat if needed. Season the beef with 1/2 tsp kosher salt, 1/2 tsp black pepper, 1 tsp dried Italian seasoning, and 1/4 tsp red pepper flakes (if using). Stir well to coat the beef in the seasonings. Remove from heat and let it cool slightly while you assemble the cheese mixture.
Step 3: Prepare the ricotta and spinach mixture
Make sure your frozen spinach is completely thawed, then squeeze it very firmly in a clean kitchen towel or paper towels to remove as much water as possible. Excess moisture will make the filling watery, so take your time here.
In a large mixing bowl, combine the ricotta cheese, egg, squeezed-dry spinach, 1 cup shredded mozzarella, 1/2 cup grated Parmesan, 1 tsp kosher salt, and a pinch of nutmeg (if using). Stir until everything is evenly mixed and the spinach is distributed throughout the ricotta. The mixture should be thick and spoonable, not runny.
Step 4: Combine the beef with the ricotta mixture
Add the slightly cooled beef-onion-garlic mixture to the ricotta-spinach bowl. Gently fold everything together with a spatula or large spoon until well combined. Taste a small bit of the filling (if you are concerned about the raw egg, taste before adding it or cook a small spoonful in the microwave) and adjust seasoning with a pinch more salt or pepper if needed.
The finished filling should be savory, cheesy, and well-seasoned, with visible flecks of spinach throughout the beef and ricotta.
Step 5: Prepare the baking dish and stuff the shells
In a medium bowl or measuring cup, stir together 3 cups marinara sauce and 1/4 cup water. The water helps loosen the sauce so it bubbles nicely and cooks the pasta evenly.
Spread about 1 cup of the thinned marinara sauce over the bottom of a 9×13-inch (23×33 cm) baking dish, just enough to lightly coat the surface.
To stuff the shells, hold one cooked shell in your hand and gently open it. Spoon in about 2–3 tablespoons of the beef-ricotta-spinach filling, or use a small cookie scoop or piping bag for less mess. You want the shells generously filled but not bursting. Arrange each filled shell, open side up, snugly in the sauced baking dish. Repeat until you have used all the filling and shells; you should have about 24 well-stuffed shells.
Step 6: Top with sauce and cheese, then bake
Spoon the remaining marinara sauce evenly over the tops of the stuffed shells, making sure each one gets a bit of sauce so they do not dry out. Sprinkle the tops with the remaining 1 1/2 cups shredded mozzarella and 1/4 cup grated Parmesan, distributing the cheeses evenly.
Cover the baking dish tightly with foil, tenting it slightly so the foil does not stick to the cheese. Bake in the preheated 375°F (190°C) oven for 25 minutes. Then carefully remove the foil and continue baking for another 10–15 minutes, until the sauce is bubbling around the edges and the cheese on top is fully melted and lightly golden in spots.
Step 7: Rest, garnish, and serve
Remove the baking dish from the oven and let the stuffed shells rest for 5–10 minutes. This short rest helps the filling set slightly, making the shells easier to serve without falling apart.
Just before serving, sprinkle with chopped fresh basil or flat-leaf parsley for a pop of color and freshness. Serve the beef and spinach stuffed shells hot, with extra marinara on the side if you like, plus garlic bread and a simple green salad for a complete meal.
Pro Tips
- Undercook the pasta slightly: Jumbo shells that are just shy of al dente hold their shape better while you fill and bake them, and they will finish cooking in the oven.
- Squeeze the spinach very dry: Too much moisture in the spinach can make the filling runny. Keep squeezing until almost no liquid comes out.
- Cool the beef before mixing: Let the cooked beef cool for a few minutes so it does not melt the ricotta and make the filling greasy or overly loose.
- Use a piping bag or zip-top bag: For neater, faster filling, spoon the mixture into a large zip-top bag, snip off a corner, and pipe it into each shell.
- Broil briefly for extra color: If you like deeper browning on the cheese, broil the dish for 1–2 minutes at the end of baking, watching closely so it does not burn.
Variations
- Beef and sausage combo: Replace half of the ground beef with Italian sausage (casings removed). Brown together with the onion and garlic for a richer, more robust flavor.
- Extra veggie version: Add finely chopped sautéed mushrooms or grated zucchini (well squeezed) to the beef mixture for more vegetables and a bit of extra moisture and savoriness.
- Spicy arrabbiata style: Use a spicy marinara or arrabbiata sauce and increase the red pepper flakes to 1/2 tsp in the beef for a noticeable chili kick.
Storage & Make-Ahead
Refrigerator: Store leftover stuffed shells in an airtight container in the fridge for up to 3–4 days. Reheat individual portions in the microwave until hot, or reheat a covered baking dish in a 350°F (175°C) oven for 15–20 minutes.
Make ahead (refrigerate): Assemble the entire dish up to the point of baking. Cover tightly with foil and refrigerate for up to 24 hours. When ready to bake, place the cold dish in a 350°F (175°C) oven, covered, for about 30–35 minutes, then uncover and bake 10–15 minutes more, until hot and bubbly.
Freeze unbaked: Assemble the stuffed shells in a freezer-safe baking dish. Cover tightly with plastic wrap and then foil. Freeze for up to 2 months. To bake from frozen, remove the plastic, cover again with foil, and bake at 350°F (175°C) for about 60–75 minutes, then uncover and bake until the cheese is melted and bubbly.
Freeze leftovers: You can also freeze baked leftovers in portions for up to 2 months. Thaw overnight in the fridge before reheating, or reheat from frozen in a covered dish at 325°F (165°C) until heated through.
Nutrition (per serving)
Approximate values per serving (about 4 stuffed shells): Calories: ~650; Protein: ~38 g; Carbohydrates: ~48 g; Fat: ~30 g; Saturated Fat: ~15 g; Fiber: ~4 g; Sodium: ~1200 mg. Actual values will vary based on specific brands of ingredients and exact portion sizes.
