Bring a large pot of salted water to a boil and cook the spaghetti until al dente. Drain and set aside.
In a large bowl, combine the ground meat, egg, breadcrumbs, chopped parsley, salt, pepper, and Parmesan if using.
Mix until just combined, then shape into meatballs.
Heat the oil in a large skillet over medium heat and brown the meatballs on all sides. Transfer them to a plate.
In the same pan, add olive oil if needed, then cook the chopped onion until softened. Add the minced garlic and cook briefly.
Pour in the tomato sauce and water. Stir in the oregano, paprika, salt, black pepper, chopped basil, and chopped parsley.
Bring the sauce to a gentle simmer.
Return the meatballs to the pan and simmer until cooked through and the sauce has thickened slightly.
Add the cooked spaghetti and toss gently to coat, or serve the sauce and meatballs over the spaghetti.
Top with Parmesan cheese and serve.