In a large oven-safe casserole dish or skillet, heat the olive oil over medium heat.
Sauté the onions until translucent, 4 to 5 minutes. Add the garlic and sauté another 30 seconds.
Add the ground beef and sauté until cooked through, about 8 minutes. Drain.
Stir the salt, oregano, and black pepper into the ground beef. Add the crushed tomatoes and reduce the heat to low to gently simmer. Stir occasionally.
Preheat the oven to 400 degrees F. Bring a large pot of well-salted water to a boil.
Add the shells to the boiling water and cook for 1 minute less than the package directions call for. Drain and rinse with cold water.
While the pasta is boiling, mix together ricotta, half of the shredded mozzarella, parmesan, egg, parsley, and salt.
Remove the sauce from the heat. With a spoon or small cookie scooper, evenly divide the ricotta mixture into the cooked pasta shells. Nestle the stuffed shells into the meat sauce as you go.
Top the stuffed shells with the other half of the mozzarella cheese.
Bake for 25 minutes then broil under high heat for about 2 minutes or until the cheese is golden brown.
Allow the pasta to cool for about 10 minutes then sprinkle with extra fresh parsley before serving.
Notes
If possible, pull the beef from the oven 30 minutes before cooking. This makes the meat easier to cook and it breaks down into more even pieces.
If you don't have a casserole dish to make the sauce in, use a skillet to cook the sauce. Then, transfer the sauce to a 9x13 baking dish before adding the stuffed shells.
The shells need to be nestled together fairly tightly to all fit. I have found the best way to do this is to push some of the sauce aside with a fork and place the shell in that spot. You can also move the shells around a bit after they've been placed.
Leftovers can be stored in an airtight container in the fridge for up to 4 days.