Heat the oil in a saucepan. Add the onions, and saute for several minutes, then add the garlic. Cook until the garlic is fragrant. To the saucepan, add the tomato sauce, basil leaves and salt and pepper. Simmer for 30 minutes.
Combine the ricotta cheese and eggs and mix lightly. Add 12 oz of the mozzarella, 6 oz of pecorino cheese, basil, parsley, salt and pepper. Combine until evenly mixed. Store in the refrigerator until ready to use.
In a large pot, bring water to a boil for the pasta. Add salt then add the pasta and cook for 4 minutes. Gently remove the pasta to a strainer, then put the pasta in a pot filled with cold water, to stop the cooking. Once cooled, remove the pasta to a strainer.
Preheat the oven to 350°F.
In two large baking pans, add some tomato sauce to the bottom of the pan and sprinkle a bit of the reserved pecorino cheese.
Stuff the cooked shells with the cheese mixture and add the stuffed shells in rows to the baking pans with the stuffing side up. Cover each shell with a bit of tomato sauce and remaining cheese.
Cover the pans with aluminum foil and bake for 45 minutes - 1 hours, and the sauce is bubbling. Remove the foil cover and return the pasta to the oven for another 5 minutes.
Serve with extra cheese.
**The dish can be made the day before and cooked before you need it.**.