Cook the pasta shells: Bring a large pot of water to a boil, add 1 tablespoon salt, and cook the shells until al dente according to package directions. Drain and spread them out on a large tray or baking sheet to cool, this prevents sticking and tearing.
Make the meat filling: In a large skillet, heat olive oil over medium heat. Add chopped onion and sauté for 6–7 minutes until soft and golden. Stir in garlic and cook for 1–2 minutes more.
Increase heat to high, add the ground beef (or beef/sausage combo), and cook until fully browned, breaking it up as it cooks.
Stir in the tomato paste and cook for 1 minute to concentrate the flavor. Add tomato sauce, water, and seasonings (salt, pepper, paprika, oregano, basil, chili flakes). Lower heat and simmer uncovered for 15–20 minutes, or until thickened.
Add the cheese: Remove the pan from heat and let the mixture cool slightly. Stir in ricotta, half of the mozzarella, and the Parmesan until fully combined.
Fill the shells: Preheat oven to 180°C (350°F). Prepare a 9x13-inch (23x33cm) baking dish or a round or 12-inch (30cm) round pan or a similar-sized pan. Spoon a thin layer of the tomato sauce (from the topping section) into the bottom of the dish.
Using a spoon or piping bag, fill each pasta shell with 1½–2 tablespoons of the beef mixture and arrange them snugly in the baking dish.
Top and bake: Mix remaining tomato sauce with salt, and pepper, and spoon it over the stuffed shells. Sprinkle the top with the remaining mozzarella.
Cover loosely with foil and bake for 25-30 minutes. Uncover and bake for 8–10 minutes more, or until the cheese is melted and slightly golden.
Serve: Garnish with fresh chopped basil or parsley. Serve hot, ideally with a side salad or garlic bread.
Video
Notes
Meat Options: Ground beef works perfectly, but for extra flavor try mixing in Italian sausage. You can also use ground chicken, turkey, or lamb.
Cheese: Ricotta gives creaminess, mozzarella makes it gooey, and Parmesan adds a salty bite. If you don’t like ricotta, you can leave it out and use more mozzarella + Parmesan.
Meat-Only Filling: For a lighter option, skip the cheese in the filling and just use the beef mixture.
Pasta Shells: Cook them just until al dente, overcooked shells will tear when filling. Spreading them on a tray to cool prevents sticking.
Sauce: A homemade marinara or tomato basil sauce makes this dish extra special, but jarred sauce is fine when you’re short on time.
Make Ahead & Storage: Assemble up to 1 day in advance and refrigerate (cover tightly). Leftovers keep in the fridge for 3-4 days or freeze up to 2 months. Reheat covered until hot.
Watch the Video: If you want to see the step-by-step process and filling technique, be sure to check out the video tutorial.