For the sauce, put the onion and celery into a food processor and blitz to a mush. (Or you can chop as finely as humanly possible by hand.) Reserve 2 tablespoons of the mixture for the meatballs.
Warm the garlic oil in a large, heavy-based saucepan or casserole, add the onion and celery mixture, along with the thyme, and cook at a moderate to low heat, stirring every now and again, for about 10 minutes.
Add the cans of plum tomatoes, filling up each empty can with water to add to the pan. Season with the sugar, salt and pepper, stir well and let the mixture come to a bubble, then turn the heat down and simmer the sauce gently while you get on with the meatballs.