Preheat oven to 450 degrees. To make meatballs, beat eggs lightly with a fork, add milk and bread, and let it stand for 5 minutes so the bread is moist.
Add ground beef, onion, parsley, garlic, salt, and pepper. Blend together well. Shape the mixture into meatballs (for some reason, making little tiny bite-sized meatballs makes them taste better, but takes up a lot of time as well).
Place the meatballs on a greased cookie sheet in the oven for 20-30 minutes, depending on the size of the meatballs.
Meanwhile, heat the oil in a really big pot over med-high heat. Add the garlic and onion and saute until it's a light golden brown. Add the plum tomatoes, tomato paste, sugar, basil, pepper, and the water to the pot. Make sure to crush up the tomatoes a bit with a spoon. Bring mixture to boil, then reduce heat to low. Continue simmering for half an hour.
When meatballs are done, remove them from the cookie sheet and put them into the sauce mixture. Cover and simmer them in the sauce for about an hour, stirring occasionally.
20 minutes before the sauce is done, boil the spaghetti. Serve sauce and meatballs over the noodles and sprinkle with parmesan.