To make the tomato sauce, heat the oil in a large heavy-based pan. Add the garlic and a pinch of salt and cook over low heat for 5 minutes, or until soft.
Add the tomatoes and their juices and simmer, uncovered, for 20 minutes. Stir in the basil and check the seasoning.
To make the meatballs, soak the breadcrumbs in the milk until soft, then mash with a fork. Heat 1 tablespoon oil in a small saucepan, add the onion and garlic and cook over low heat until the onion is soft. Remove from the heat and cool.
Combine the minced veal, mashed bread mixture, onion mixture and remaining ingredients and mix firmly until well combined and holding together. Form the mixture into small balls.
Drizzle some oil in a heavy-based frying pan and cook the meatballs in batches without overcrowding the pan. Brown on all sides and add to the tomato sauce to heat through. Meanwhile, cook the spaghetti in a saucepan of well salted boiling water, until al dente, then drain.
Divide the pasta among four large pasta bowls and top with meatballs and sauce. Sprinkle with freshly grated Parmesan and give a generous grind of pepper.