Heat olive oil in a large pot over medium heat.
Add chopped onion and celery.
Cook until the onion is translucent, about 5 to 8 minutes.
Stir in garlic and cook for about 1 minute until fragrant.
Add canned tomatoes, including the juice.
Mix well.
Pour in chicken or vegetable broth and bring the mixture to a boil.
Reduce heat and let it simmer for 20 to 25 minutes.
Use an immersion blender to puree the soup until smooth.
If you don't have one, carefully transfer the mixture to a blender in batches.
Blend until creamy.
Return the soup to the pot and stir in the heavy cream.
Add sugar, salt, and pepper.
Simmer for an additional 10 minutes.
Serve with fresh basil.