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.
For the meatballs, put all the ingredients for the meatballs, including the reserved chopped onion and celery, and salt according to preference, into a large bowl and gently mix together with your hands. Don’t overmix, as that will make the meatballs dense-textured and heavy.
When all the meatball ingredients are not too officiously amalgamated, start rolling them into balls. The easiest way is to pinch out an amount about the size of a generously heaped teaspoon and roll it into a ball between the palms of your hands. Put each meatball onto a baking tray lined with baking parchment or greaseproof paper. You should get about 50 little meatballs.
Drop the meatballs gently into the simmering sauce; I try to let these fall in concentric circles working round the pan from the outside edge inwards, in the vaguest of fashions.
Let the meatballs simmer in the sauce for 30 minutes, or until cooked through. Serve with rice, pasta, couscous or however you so please.