In a large bowl, combine ground beef, milk, seasoned bread crumbs, egg, chopped parsley, 3 minced garlic cloves, 1/4 cup finely chopped onion, 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 evenly sized meatballs; set them on a plate.
Heat 2 tablespoons olive oil in a heavy-bottomed pot or Dutch oven over medium heat and brown half the meatballs on all sides; remove to a plate (they will finish cooking in the sauce).
Add the remaining 2 tablespoons olive oil and brown the remaining meatballs; remove and set aside with the first batch.
To make the sauce, add the diced onion to the pot with the meat drippings and any remaining oil; cook until nearly tender, about 4 minutes.
Stir in the 2 minced garlic cloves and cook until fragrant, about 30 seconds.
Pour in the tomato sauce, beef broth, dried basil, Italian seasoning, and sugar; stir to combine and bring to a gentle simmer.
Add the browned meatballs back into the sauce, spooning sauce over them; reduce heat to low or medium-low and simmer gently, uncovered, for 30–45 minutes until meatballs are cooked through and tender. Taste and adjust salt and pepper if needed.
Meanwhile, cook spaghetti in a separate pot according to package directions until al dente; drain.
Serve meatballs and sauce over the cooked spaghetti and garnish with chopped fresh basil and extra Parmesan if desired.