These beef stuffed shells take classic comfort food and make it a little healthier without losing any flavor! They’re packed with ground beef, spinach, cottage cheese, and a mix of cheeses. The jumbo shells hold the beefy filling perfectly under a chunky, flavorful homemade marinara sauce.
Each serving has over 30 grams of protein, making it a filling, protein-packed meal! They’re so delicious. Especially paired with my stuffed garlic bread.
Trust me, you’re going to love this recipe. 😊
You’ll also love my cottage cheese recipes and meal preps with ground beef recipe collections, as well as this hearty Instant Pot Mississippi Pot Roast.
Just a heads up: some of the links on this site are affiliate links. This means that if you click on them and make a purchase, I may earn a commission at no extra cost to you. I only recommend products I genuinely love and use (or would use) myself, and your support helps keep this site going! Thank you so much!
Beef Stuffed Shells Recipe

Beef stuffed shells are one of my favorite recipes for meal prep. They reheat beautifully, making them perfect for busy weeknights, but they also feel special enough for a holiday meal.
My mom has been making stuffed shells for years, always on Christmas Eve, which is probably why they feel like the ultimate Christmas dinner to me (along with stuffed cabbage rolls). I’ll never forget the year my dad was carrying a huge tray of stuffed shells up my grandparents’ stairs, tripped, and sent the entire dish flying across the sunporch (sorry, Dad, I love you! 😂). I still laugh about it now. I’d give anything to have one more Christmas at my Grandma and Grandpa’s!
Table of contents
Watch Me Make It
Marinara Sauce Ingredients:
I have spent years perfecting this marinara, and it finally tastes just right. 🎉🍅
I’ve got a few tricks for getting the flavor perfectly balanced, and it doesn’t involve adding sugar or baking soda. Below, I’ll break down each ingredient and what it does for the sauce, from blooming the spices with the onions and garlic to finishing it off with a little butter that rounds everything out!


Olive Oil – This is what softens the onions and garlic and helps everything get that rich, cooked-in flavor.
Yellow Onion (finely diced) – Gives the sauce its base flavor. Chopping it small helps it melt right in and flavor the sauce throughout!
Garlic – Gives the sauce that cozy, Italian smell and deeper flavor. The more finely you mince it, the better it spreads through the sauce.
Finely Grated Carrot – Adds natural sweetness without adding sugar. When it’s grated super fine, it disappears into the sauce but balances the acidity really well!
Crushed Tomatoes – This is the main body of the sauce. Perfect for simmering!
Petite Diced Tomatoes – These bring that chunky, restaurant-style texture that I was going for with this marinara sauce.
Seasonings (oregano, red pepper flakes, salt, black pepper) – The flavor boosters! Oregano gives classic Italian flavor, red pepper flakes (optional) bring a tiny bit of heat, and of course, salt and pepper are always needed.
Parmesan Rind – This gives the sauce extra savory flavor as it simmers. A little flavor bomb that melts into the tomatoes! It’s optional, but worth adding if you have one. Since the filling also uses fresh Parmesan, you can buy a block and use it for both instead of pre-shredded.
Fresh Basil – Stir this in right at the end. Keeps the sauce bright and fresh instead of cooked down and dark.
Butter – Finishes the sauce and makes it silky. Kind of like what restaurants do.
How to Make the Marinara Sauce


- Heat olive oil in a large saucepan over medium heat. Add the diced onion and grated carrot, and sauté for 3–4 minutes until the onion softens.
- Stir in the garlic, dried oregano, and red pepper flakes (if using). Cook 1–2 minutes to bloom the spices and release their flavor.
- Add the crushed tomatoes and half a can of water, then stir in the diced tomatoes with their liquid, salt, and black pepper. Toss in a Parmesan rind if you have one.
- Bring the sauce to a simmer over medium-high heat, then reduce the heat to low and cook partially covered for about 30 minutes, stirring occasionally.
- Finish with a pat of butter and fresh basil. Taste and adjust seasoning. Blend smooth if you prefer, or leave it chunky!
Pasta and Filling Ingredients:


Olive Oil – Helps the beef brown nicely and keeps it from sticking.
Ground Beef – The hearty, savory base of the filling. Browning it well adds so much extra flavor!
Seasonings (garlic powder, onion powder, oregano, salt, black pepper) – These blend right into the beef and cheese mixture so the flavor feels even throughout the filling.
Cottage Cheese – Adds creaminess and a big protein boost. Once it’s mixed with everything, you don’t taste it separately; it just makes the filling smoother.
Ricotta – The classic stuffed-shells texture. Soft, creamy, and keeps the filling from feeling heavy.
Mozzarella – Adds that melty, stretchy cheese pull inside the shells!
Parmesan – Adds a sharp, salty bite that balances out all the creamy cheeses.
Eggs – Help hold the filling together so it sets just enough when it bakes, but still stays tender.
Fresh Parsley – Adds a pop of freshness so the filling doesn’t taste too heavy.
Spinach – Brings color, nutrients, and a little extra moisture. Cooking it with the beef makes it wilt perfectly without watering down the filling.
Jumbo Shells (cooked al dente) – You want them just firm enough to hold their shape while baking, but soft enough to easily fill.
How to Make the Pasta and Filling


- Bring a large pot of salted water to a boil and cook the jumbo shells until al dente. Drain and let them cool slightly.
- Heat olive oil in a skillet over medium heat and brown the ground beef, breaking it up as it cooks.
- Stir in the seasonings and chopped spinach, cooking until wilted. Remove from the heat and let the mixture cool a bit.
- Blend the cottage cheese until smooth. In a large bowl, combine the beef-spinach mixture with mozzarella, ricotta, blended cottage cheese, Parmesan, eggs, and parsley. Mix everything until well combined.
- Cover the filling and chill it in the fridge until you’re ready to assemble the shells. Chilling for at least 30 minutes or even overnight is best to allow the filling to set and flavors to meld together. It also makes stuffing the shells a bit easier, but if you don’t have the time, it’s not completely necessary!


Assembling the Beef Stuffed Shells
Whenever I used to make stuffed shells, I’d put a little sauce in the pan, squeeze in as many shells as I could, and then top everything with more sauce and cheese. I never thought twice about it until I started photographing this recipe and realized the photos were going to look super messy. 😅
You also can’t really see that cheesy, beefy filling when it’s buried under a blanket of sauce. So I paused, rethought the presentation, and came up with a way to make these beef stuffed shells look as good as they taste.


By this point, I’d already tested the recipe a bunch of times until it was just right, but sometimes things don’t go as planned, and a little pivot was needed. After plenty of testing (and eating our fair share of stuffed shells), plus working on my Christmas recipe collections and Gifts for Foodies holiday gift guide, I’m so excited (and relieved) the recipe is finally ready to share!
With that being said, you can present your stuffed shells however you like: pile them over a thick layer of sauce in the pan and serve any extra on the side, or top each shell with sauce and extra mozzarella. It’s completely up to you! Either way, I promise they’re going to be delicious.

FAQ: Beef Stuffed Shells
In this recipe, yes! Ground beef adds heartiness and protein, making the filling rich and satisfying. It pairs perfectly with the cheeses and spinach.
The filling combines ricotta, mozzarella, Parmesan, and cottage cheese for creaminess and protein, plus browned ground beef, fresh spinach, chopped parsley, eggs, and seasonings. It’s flavorful, balanced, and holds together perfectly in the shells.
The most common issues are overcooking the pasta! It should be al dente so it holds up when filled. And, adding too much fat or moisture to the filling can make the shells soggy. Also, make sure to season the filling well; a little salt, pepper, and herbs really bring out the flavor!
Using these lower-fat cheeses helps keep the filling from getting too watery and makes it firmer and more cohesive. You still get a creamy, flavorful filling, but the shells stay perfectly cooked instead of soggy.
Each serving of 3 shells has roughly 31 grams of protein from the beef, cottage cheese, and cheeses in the filling!
A few little tricks make all the difference. Start by blooming the spices with onions and garlic to build flavor, add a bit of grated carrot to naturally cut the acidity, and finish with a touch of butter for richness. Stir in fresh basil at the end for freshness, and toss in a Parmesan rind if you have one to deepen the flavor as it simmers. It makes for the perfect sauce for stuffed shells!
Not at all! While the homemade sauce adds extra flavor, you can use a good store-bought marinara if you’re short on time. One we like is Mezzetta. It’s flavorful and balances well with the filling!
Bake at 375°F (190°C) for about 25 minutes covered with foil, and 10 minutes uncovered, or until the filling is set and the sauce is bubbly.
Let them cool to room temperature, then store in an airtight container in the fridge for up to 4 days. Reheat in the oven or microwave until warmed through.
Yes! Arrange the stuffed shells in a freezer-safe container or dish, cover tightly with foil or plastic wrap, and freeze for up to 2–3 months. Thaw in the fridge overnight before reheating in the oven!

Whether you’re prepping meals for the week or making dinner for a special occasion, these super-flavorful beef-stuffed shells are sure to impress!
I’d love to hear about your experience with the recipe! Please leave a question or recipe review, get in touch via email, and follow me on social media, which I have linked below.
You can also subscribe to the Heavenly Spiced email list to stay updated on new recipes, giveaways, life updates, and more! Hope to see you there. – Jenna 😊💌
More holiday favorite recipes:
- Stuffed Cabbage Rolls
- Stuffed Mushrooms with Crab
- Broccoli Pomegranate Salad
- Rosemary Garlic Mashed Potatoes
Beef Stuffed Shells [High Protein Cottage Cheese + Spinach]
- Total Time: 1 hour 50 minutes
- Yield: 21 beef stuffed shells 1x
Description
These beef stuffed shells are packed with protein, creamy cottage cheese, and nutrient-rich spinach, making them hearty yet lighter than the classic version. Perfect for meal prep, weeknight dinners, or a special holiday meal, they’re baked in a flavorful homemade marinara that’s balanced and rich. Easy to assemble and full of flavor!
Ingredients
Marinara Sauce:
- 3 tablespoons extra-virgin olive oil
- 1 small yellow onion (or 1 cup), finely diced
- 6 garlic cloves, minced
- 1/4 cup carrot, finely grated
- 28 ounce can crushed tomatoes (plus half can of water)
- 14.5 ounce can petite diced tomatoes, don’t drain
- 1 teaspoon dried oregano
- 1 teaspoon fine sea salt
- 1/2 teaspoon black pepper
- 1/2 teaspoon red pepper flakes (optional)
- Parmesan rind
- Handful of fresh basil leaves, torn
- 1 tablespoon unsalted butter
Beef Stuffed Shells:
- 21 jumbo pasta shells
- 1 tablespoon extra-virgin olive oil
- 1 pound ground beef (85/15)
- 3/4 teaspoon garlic powder
- 1/2 teaspoon onion powder
- 1/2 teaspoon dried oregano
- 1/2 teaspoon fine sea salt
- 1/2 teaspoon black pepper
- 4 cups fresh spinach, chopped
- 1 cup low-fat cottage cheese, blended smooth
- 1 cup part-skim mozzarella, freshly shredded
- 1/2 cup fresh parmesan, freshly grated
- 2 large eggs
- 3 tablespoons fresh parsley, chopped
Instructions
- Start by making the marinara sauce. Heat olive oil in a large saucepan over medium heat, then add the diced onion and grated carrot. Sauté for 3–4 minutes, until the onion softens. Stir in the garlic, dried oregano, and red pepper flakes (if using), cooking 1–2 minutes to bloom the spices.
- Add the crushed tomatoes and half a can of water, then stir in the diced tomatoes with their liquid, salt, and black pepper, and parmesan rind. Bring the sauce to a simmer over medium-high heat, then reduce to medium-low and cook, partially covered, for about 30 minutes, stirring occasionally. Finish by stirring in the butter and fresh basil, then taste and adjust seasoning if needed. If you prefer a smoother sauce, you can blend it as smooth as you like using a hand blender, or leave it chunky
-
While the sauce simmers, bring a large pot of salted water to a boil and cook the jumbo shells until al dente (8-9 minutes), as they will continue to cook in the oven. Drain and set aside to cool slightly.
- Next, prepare the filling. Heat olive oil in a skillet over medium heat and cook the ground beef until browned, breaking it up as it cooks. Stir in the seasonings and chopped spinach and cook until wilted. Then, remove the skillet from the heat and allow the mixture to cool slightly. In the meantime, blend the cottage cheese in a food processor or blender until smooth. In a large bowl, combine the beef-spinach mixture with the mozzarella, ricotta, cottage cheese, Parmesan, eggs, and chopped parsley. Mix until well combined.
-
Preheat the oven to 375°F (190°C). To assemble the stuffed shells, layer the bottom of the baking dish with marinara, then fill each shell with about 2 tablespoons of filling and arrange them in the dish. For presentation, I usually leave the sauce off the top so the beefy, cheesy filling is visible and serve extra sauce on the side, but you can also spoon sauce over the shells and add extra mozzarella if you prefer!
- Cover the beef stuffed shells with foil and bake in the preheated oven for about 25 minutes. Remove the foil and bake for another 10 minutes. Allow the shells to cool for 5 minutes before serving to allow the filling to set. Garnish with freshly chopped parsley and grated Parmesan if you wish. Enjoy!
Equipment
Buy Now →
Buy Now →
Buy Now →
Buy Now →
Buy Now →
Buy Now → 
Large Walnut Wood Cutting Board
Buy Now →
Buy Now →
Buy Now → Notes
- Chill the filling: After mixing the filling, you can assemble the shells right away or cover and chill it in the fridge for at least 30 minutes, or overnight. This helps the filling firm up, making it easier to stuff the shells, and allows the flavors to meld.
- Cheese choices: Using part-skim ricotta, part-skim mozzarella, and low-fat cottage cheese helps reduce excess moisture and keeps the filling creamy without making the shells soggy.
- Marinara shortcuts: My homemade recipe is delicious, but a good-quality store-bought marinara, like Mezzetta, works too! You can use your favorite. You might want to grab two jars depending on how saucy you like your beef stuffed shells.
- Storage: Leftovers can be stored in an airtight container in the fridge for up to 4 days. Reheat in the oven or microwave. The stuffed shells can also be frozen in a tightly covered dish. Just thaw them overnight in the fridge before reheating.
- Prep Time: 30 minutes
- Cook Time: 1 hour, 20 minutes
- Category: Christmas Recipes, Fall Recipes, High-Protein, Main Dishes, Meal Prep, Pasta
- Method: Oven, Stovetop
- Cuisine: Italian-American

















Yum! Thank you for this delicious recipe! I’ve always loved traditional stuffed shells, but adding beef takes the flavor up a notch!
You are so welcome, Debbie! Yes the beef mixed with the cheeses and spinach is so delicious. I’m happy you’re loving the recipe!
Loved this dish! All great ingredients and I loved the shredded carrot as the sweetener for the sauce. Never tried that but will be my new trick from now on. I will make these again! So so yummy. My husband loved it too! Presentation is so nice. 🙂
I’m so happy you and the hubby loved the recipe, Kate! Yes, the carrot trick is my favorite. 🙂