Chop all of the vegetables and put in a large soup pan.
Add the water and basil and season.
Bring to boil and simmer for 1 hour.
Pour the soup into a blender (or use a hand blender if you don't have one) and blend until smooth. You may need to do this in batches if you have a small blender. Pour it back into the pan and add the tomato puree. Simmer for 5-10 minutes.
If you want to add even more flavour to this vegan tomato soup, then you can roast the tomatoes before adding them to the pan. This will increase the cook time considerably though. You could roast the garlic too.
You could swap the onion for shallots and this would add even more of a sweet flavour to the soup.
Try to use a high powered blender, so make the soup really smooth and creamy.
Make sure the soup has cooled before blender, so it doesn't crack your blender.
Add some extra creaminess to it with a splash of coconut milk or some creme fraiche.