Preheat the oven to 400 degrees.
Add the oil to a large skillet over medium heat. Add the diced onion and cook until softened, about 5 minutes.
Add the ground beef to the onions, breaking up with a spoon to brown through. If there is a lot of grease after the beef cooks you can drain it and add it back to the skillet.
Add the spinach, garlic, salt, pepper, garlic powder and oregano to the beef. Stir to combine then remove from the heat.
Add the ricotta cheese, egg, 1/3 cup of the parmesan cheese to a large bowl. Pour in the beef and spinach filling and mix together.
Add 2 cups of the sauce to the bottom of a 9" x 13" baking dish.
Stuff the shells generously with the filling and place in the baking dish.
Repeat with the remaining shells, cover with mozzarella cheese and the remaining 2 tablespoons of parmesan cheese.
Spray a piece of foil large enough to cover the baking dish with cooking spray, then cover the baking dish and place in the oven for 30 minutes.
Remove the foil and return the shells to the oven for another 15 minutes.
Serve with warmed extra sauce if desired.