Preheat the oven to 200C/180C Fan/Gas 6.
Heat the oil in a large, heavy-based saucepan, add the onion and sweet potato and fry gently for 4-5 minutes, stirring regularly, until the onion has softened and is beginning to brown. Add the garlic and fry for 1-2 minutes, stirring regularly.
Add the remaining sauce ingredients and 500ml/17fl oz water and stir well to combine. Season with salt and pepper. Bring to the boil, then simmer for 18-20 minutes, stirring regularly, until the vegetables are very soft.
Meanwhile, put the bread in a large bowl. Pour over the milk and set aside for a few minutes until the milk has soaked into the bread.
Add the onion and carrot. Squeeze any excess moisture from the courgette and add along with the mince and egg yolk. Mix all of the ingredients until thoroughly combined. Season well with pepper, then mix again.
Roll into 24 small balls, arranging them in the bottom of a shallow, 2 litre/3½ pint ovenproof dish. Bake for 18-20 minutes, or until lightly browned. Drain off any liquid that has collected in the bottom of the dish.
When the sauce is ready, remove the bay leaf. Using a hand-held blender, blitz the sauce until smooth.
Pour over the meatballs and sprinkle with the mozzarella. Return to the oven and cook for a 20-25 minutes, or until the cheese has melted and browned and the sauce is bubbling. Serve immediately with cooked pasta, rice or even mashed potatoes.