In a large pot or saucepan, heat the olive oil and butter over medium heat. Add the chopped yellow onion and sauté for about 4 minutes, or until it becomes translucent. Then, add the minced garlic and cook for 1 additional minute, stirring frequently until fragrant.
Add the can of whole tomatoes (including their juice) and vegetable broth to the pot with the sautéed onions and garlic. Stir to combine. Bring the mixture to a boil over high heat, then reduce to low and simmer for 10-15 minutes to allow the flavors to meld.
Remove the pot from the heat temporarily. Using an immersion blender, purée the soup in the pot until completely smooth. If you don’t have an immersion blender, carefully transfer the soup— in batches— to a traditional blender, purée until smooth, then return it to the pot. I recommend letting the soup cool for a few minutes if you're using a regular blender to avoid spills.
Return the puréed soup to medium-low heat. Stir in the heavy cream until fully combined and heat through, but do not allow it to boil. Season generously with salt and black pepper to taste. I like to add a little extra black pepper for a subtle warmth.
Ladle the hot soup into bowls. Drizzle each serving with a little extra heavy cream and garnish with chopped fresh parsley or basil, if desired. Serve immediately and enjoy!