Preheat your oven to 350°F and lightly grease a 9x13-inch casserole dish.
Place the ground beef in a large skillet on medium heat to brown it. Use a slotted spoon to remove the meat from the skillet, then set it aside. Remove the fat from the pan, but don’t rinse or clean it.
Return the skillet to your stovetop and heat the olive oil. Add the onions and sauté over medium heat until they become translucent and fragrant, or about 2 minutes.
Add the tomato pasta sauce to the pan along with the Italian seasoning and water. Reduce the heat to a simmer and allow it to cook for 10 minutes. Add the browned meat to the mix and stir to combine.
In a pot, add 2 tablespoons of salt to 4 quarts of water and bring to a boil. Add your spaghetti and cook until al dente or 10-12 minutes. Drain and return to the pot.
Return the meat to the sauce and let it simmer for 1 to 2 more minutes.
Add the melted butter and eggs to the spaghetti and toss to coat.
Spread 1 cup of the beef sauce on the bottom of your casserole dish making sure to spread it all the way to the edges.
Then layer with half of the noodles. Add half of the remaining sauce so that the spaghetti is completely covered.
Spoon the ricotta cheese on top, then sprinkle on half of the mozzarella. Layer the remaining pasta, then the sauce, and then the rest of the mozzarella cheese on top. Sprinkle the grated parmesan over the mozzarella cheese.
Cover your Spaghetti Casserole with tin foil and bake for 40 minutes. Remove the foil and bake for 15-20 more minutes. Let the casserole set for about 10 minutes before slicing it. Serve with Parmesan and a bit of fresh basil on top!