Preheat the oven to 350 degrees F.
Heat a medium skillet over medium heat. Add 1 teaspoon of the olive oil, onion and ground beef. Season with salt and pepper to taste. Saute until the meat browns and the onion is translucent, about 5 minutes. Remove from the heat, toss in spinach and basil, and cool.
Cook the shells in a large pot of boiling salted water until slightly softened, but still very firm to the bite, about 6 minutes. Drain shelsl and rinse with cold water. Place to the side.
Meanwhile, combine the ricotta, 1 1/2 to 2 cups mozzarella cheese, 1/2 cup Parmesan, and parsley. Add the garlic, salt, and pepper to taste, and mix. Stir the cooled meat mixture into the cheese mixture.
Brush the remaining 2 teaspoons of oil over a 13 by 9 by 2-inch glass baking dish. Spoon 1 1/2 cups of the marinara sauce over the bottom of the prepared dish. Fill the shells with the cheese-meat mixture. Arrange the stuffed pasta in a single layer in the prepared dish and spoon the remaining sauce over.
Sprinkle the remaining 1 1/2 cups of mozzarella cheese, then the remaining 1/2 cup of Parmesan over the stuffed pasta. Dot entire dish with the butter pieces. Bake the shells uncovered until heated through and the sauce bubbles on the sides of the dish, about 30 to 35 minutes. Let the shells stand 5 minutes and serve.