In a large bowl, combine ground beef, milk, seasoned bread crumbs, egg, chopped parsley, 3 cloves minced garlic, 1/4 cup finely chopped onion, 1/4 cup grated Parmesan, and salt and pepper to taste; mix until just combined.
Portion the mixture using a 3-tablespoon scoop or spoon and roll into meatballs; set them on a plate.
Heat 2 tablespoons of the olive oil in a heavy-bottomed pot or Dutch oven over medium heat. Brown half the meatballs, turning to color all sides, then transfer to a plate (they will not be fully cooked).
Add the remaining 2 tablespoons olive oil and brown the remaining meatballs; transfer them to the plate.
To make the sauce, add the diced onion to the pot with the meat drippings and any remaining oil. Cook until the onion is nearly tender, about 4 minutes.
Stir in 2 cloves minced garlic and cook until fragrant, about 30 seconds.
Pour in the tomato sauce and beef broth, then add dried basil, Italian seasoning, 1 tablespoon sugar, and salt and pepper to taste; stir to combine.
Return the browned meatballs to the pot, gently coat them with the sauce, reduce heat to low or medium-low, and simmer uncovered for 30–45 minutes until meatballs are cooked through and tender.
Meanwhile, cook spaghetti according to package directions until al dente, drain, and divide among plates.
Spoon meatballs and sauce over the spaghetti, garnish with chopped fresh basil and additional grated Parmesan if desired, and serve.