Heat a saucepan with some olive oil (about 2 tablespoons) and fry the onion until soft and translucent. Add the garlic and cook for another minute. Add the tinned tomatoes, seasoning, oregano and tomato puree.
Stir well, bring to the boil then turn down to a simmer and cook for 1 hour. Place into a liquidiser, add fresh torn basil leaves and blend until the sauce is a thick puree. Pour into a bowl, cool down then chill until required for re-heating later.
For the mozzarella:
Meanwhile, prepare the mozzarella. Have one bowl to hand with the beaten eggs and another bowl with breadcrumbs in. Dip the mozzarella first into the beaten egg, drain the excess the dip into the breadcrumbs to coat. Repeat with the remaining balls. Then repeat the whole process so the balls have a double coating. Place onto a dish and chill in the fridge until required.
When ready to cook, heat some oil in a deep fryer, wok or deep saucepan. While the oil is heating up, heat your tomato sauce in a saucepan gently, do not boil. When heated through add the butter to the sauce and mix well.
Gently add the mozzarella balls into the hot oil, I would do two at once. You don't want the oil too hot otherwise the breadcrumbs will burn and the cheese will not soften correctly. Mine took 5 minutes to cook; the breadcrumbs should be crispy and browned and the cheese firm but slightly gooey.
Serve on a plate with tomato sauce and fresh basil leaves to garnish.
The sauce can be prepared up to two days in advance, in fact it really helps the flavour develop more. If you don't have time to do that, you can prepare a few hours in advance and is still tasty.