Warm oil in a large saucepan over medium-high heat. Add onion and cook, stirring often, until softened, 3 to 5 minutes. Add garlic and cook until slightly softened and fragrant, about 1 minute. Stir in flour to blend, about 1 minute.
Add tomatoes with juice and broth to saucepan, increase heat to high and bring to a boil. Stir or whisk constantly until slightly thickened, about 3 minutes.
Working in batches, carefully transfer soup to a blender and puree until smooth. Pour into a bowl until all soup is pureed. Return soup to saucepan, stir in cream and cook over low heat for 3 to 5 minutes, until heated through. Do not boil. Season with salt and pepper. Serve hot in warmed cups.