Melt butter in a large pot over medium heat. Add onion and cook 7 minutes until softened and lightly golden.
Add garlic and cook 1 minute.
Add both cans of tomatoes (with juices) and chicken broth. Stir. Bring to a simmer.
Cook uncovered 20 minutes — the tomatoes will break down and the flavors will concentrate.
Remove from heat and blend until completely smooth using an immersion blender. Alternatively, use a regular blender in batches with the lid slightly ajar.
Return to heat. Stir in heavy cream and season with salt. Simmer 5 more minutes.
Taste and adjust. The soup should taste bright and sweet from the tomatoes with a creamy finish.