Preheat the oven to 375°F (190°C).
Cook the pasta shells according to package instructions until al dente. Drain and set aside on a paper towel to dry.
Cook the beef: In a skillet, heat the olive oil over medium heat. Add the ground beef and cook until browned, breaking it up into small pieces as it cooks. Season with salt, pepper, and Italian seasoning. Add the minced garlic and cook for another 1-2 minutes until fragrant. Remove from heat and set aside.
Make the ricotta filling: In a bowl, combine the ricotta cheese, 1 cup of mozzarella cheese, ½ cup of Parmesan cheese, egg, and any optional additions such as spinach or herbs. Mix until well combined. Stir in the cooked beef mixture.
Stuff the shells: Carefully stuff each cooked pasta shell with the beef and ricotta mixture. Place the stuffed shells in a greased 9×13-inch baking dish.
Assemble and bake: Pour the tomato sauce over the stuffed shells. Top with the remaining mozzarella and Parmesan cheeses. Cover the dish with foil and bake for 25 minutes. Then remove the foil and bake for an additional 10-15 minutes, or until the cheese is bubbly and golden.
Garnish and serve: Sprinkle with fresh basil or parsley if desired, and serve hot. Sprinkle with fresh basil or parsley if desired, and serve hot.