Peel and finely chop the shallots. Finely chop the parsley stalks and set the leaves aside for later. Strip the thyme leaves off the sprigs.
Beat the egg in a large bowl. Add the shallots, parsley stalks, thyme, 1 tsp dried oregano, the breadcrumbs and the beef mince. Season with a pinch of salt and pepper. Mix together, using your hands to squeeze everything together and make sure it's well mixed. Roll the meatball mix into roughly 10-12 balls. Put on a plate, cover with cling film and bung in the freezer for 5-10 mins.
While the meatballs rest, peel and finely chop the onion. Peel and grate or crush the garlic. Put a large pan of salted water on to boil.
Melt ½ the butter in a deep frying pan or wok over a medium heat. Add the meatballs. Gently fry for around 5 mins, turning them occasionally, till they're golden brown all over. Lift the meatballs out of the pan and pop onto a plate.
Add the onion to the pan. Season. Stir and fry for 5-8 mins till the onion is soft but hasn’t picked up too much colour – keep the heat fairly low. Stir in the garlic.
Add the chopped tomatoes. Half-fill the empty tin with water (around 200ml) and add that too. Stir the sauce. Add the meatballs back in. Cover. Simmer for 15 mins till the sauce is thickened and the meatballs are cooked through.
When the meatballs have 10 mins left to cook, and the water in the large pan is boiling, add the spaghetti to the water. Simmer for 8 mins, till the spaghetti is tender and not too soft.
Drain the spaghetti. Divide between 2 warm plates or bowls. Stir the remaining butter into the meatballs and sauce. Taste and add a pinch more salt or pepper. Spoon the meatballs and sauce over the spaghetti. Garnish with the parsley leaves and serve with the parmesan cheese for grating.