In a large bowl, mix ground beef with milk, bread crumbs, egg, parsley, garlic, onion, salt, pepper, and parmesan cheese until well combined. Using a 3 tablespoon cookie scoop, divide meat mixture into equal portions and roll into balls.
Heat 2 tablespoons olive oil in a heavy-bottomed pot or dutch oven over medium heat. Brown half the meatballs and remove to a plate. They will not be fully cooked and that's ok. Add in remaining 2 tablespoons olive oil and brown remaining meatballs. Remove to a plate.
To make the sauce, add in an onion to the pot with meat drippings and any remaining olive oil. (There should be enough residual grease in the bottom of the pan, but if there is not, add in 1-2 more tablespoons of olive oil.) Cook onions until nearly tender, about 4 minutes. Stir in garlic and cook until fragrant, about 30 seconds. Pour in tomato sauce, beef broth, seasonings, and sugar. Stir. Add meatballs gently back into the pan and coat in sauce. Reduce heat to low or medium-low to gently simmer for 30-45 minutes or until meatballs are tender and fully cooked. Taste sauce and adjust seasoning.
Serve over spaghetti with fresh basil and extra parmesan cheese.