Fry the onion in the olive oil and butter in a large pan over a low heat until softened. Add the mushrooms, turn up the heat to medium and cook, stirring regularly, until all of the excess moisture has evaporated and the mushrooms have browned a little.
Add the garlic, rosemary and thyme and cook for another minute then transfer the mixture to a food processor. Blend until it is very finely chopped then add the oats and blend again.
Stir in the breadcrumbs, oregano, salt, parmesan/nutritional yeast, eggs/flax eggs, soy sauce and plenty of black pepper. Cover the bowl and place in the fridge for at least a couple of hours.
While the mushroom mixture is chilling make the tomato sauce. Heat the olive oil in a large pan over a low heat and fry the onion, carrot and celery for about 10 minutes until very soft. Finely chop the basil stalks, setting the leaves aside, and add them to the pan. Add the garlic and tomato puree and cook for another minute.
Add the red wine and allow it to bubble away until it has almost all evaporated then add the chopped tomatoes, water, bay leaves, sugar and some salt and pepper.
Bring up to a gentle simmer and allow to cook, stirring every now and again, for about 30 minutes. Add a splash of water if it gets too thick. Remove the bay leaves then either use a stick blender to blend the sauce until it is smooth as I did, or leave it chunky.
Form the mushroom mixture into balls about the size of a golf ball. Fry them gently in a little olive oil, turning them regularly, until they are browned. Alternatively you can bake them in the oven on a baking parchment lined baking sheet at 200C/400F/gas mark 6 for about 30 minutes, turning them halfway through.
Add the meatballs to the tomato sauce and simmer gently for 5-10 minutes then serve with pasta and grated cheese.