Heat oil in a dutch oven or large stock pot over medium high heat. Add onion and shallots and sauté for 3-4 minutes, until translucent and soft. Add garlic and cook another 30-45 seconds.
Add tomatoes, tomato paste, broth, and spices; bring to a boil then reduce heat and simmer for 10-15 minutes.
Add butter and basil and stir until butter is melted. Using a handheld blender (transfer to stand blender if you don’t have one), puree until smooth.
Stir in heavy cream and adjust salt and pepper to taste.