Heat the olive oil in a large pot over medium heat.
Add the chopped onions, garlic, carrots, and celery to the pot. Sauté them for about 5-7 minutes until they become soft and the onions turn translucent.
Add the chopped tomatoes to the pot. Cook for another 5 minutes, stirring occasionally.
Pour in the vegetable broth and bring the mixture to a boil. Once it's boiling, reduce the heat to low and let it simmer for about 20-25 minutes or until the vegetables are very tender.
Remove the pot from heat and allow the soup to cool slightly.
Use an immersion blender to carefully blend the soup until it's smooth. Alternatively, you can transfer the soup to a blender in batches, blending each batch until smooth, and then returning it to the pot.
Place the pot back on the stove over low heat. Add balsamic vinegar, honey or sugar, salt, pepper, and basil to the soup. Stir well and let it simmer for an additional 5-10 minutes to allow the flavors to meld. Adjust the seasoning to your taste by adding more vinegar, honey, salt, or pepper if needed.
If you want a creamy tomato soup, stir in the heavy cream at this stage. Heat the soup for another 5 minutes, but do not let it boil.
Once the soup is heated through and seasoned to your liking, remove it from the heat.
Serve the tomato soup hot, garnished with fresh basil leaves or a drizzle of cream, if desired.Enjoy your delicious homemade tomato soup!