In a large stockpot or Dutch oven, melt the butter over medium heat.
Add the chopped onions and cook, stirring occasionally, until they soften and become translucent, about 5-7 minutes.
Stir in the minced garlic and cook for another minute until fragrant.
Pour in the entire can of tomatoes with their juices, breaking them up with a spoon.
Add the vegetable broth and fresh basil. Increase the heat to high and bring the mixture to a boil.
Once boiling, reduce the heat to low, cover, and let it simmer for 20 minutes to allow the flavors to meld together.
Remove the pot from the heat. Use an immersion blender to carefully blend the soup directly in the pot until it reaches your desired smoothness.
Return the pot to low heat and stir in the heavy cream.
Let the soup gently simmer, uncovered, for another 15 minutes.
Do not let it boil.
Season generously with salt and pepper to taste.
Ladle the hot soup into bowls and garnish with a sprinkle of Parmesan cheese and a few fresh basil leaves, if desired. Leftovers can be stored in an airtight container in the refrigerator for up to 5 days.