Heat the butter in a large soup pot over medium-high heat. Add the bacon and cook, stirring, until crisp and most of the fat has rendered, about 1 minute. Using a slotted spoon, transfer the bacon to a paper towel-lined plate and set aside. Lower the heat to medium, add the onion, carrots, celery, and garlic and cook, covered, stirring occasionally, until soft and fragrant, about 8 minutes.
Stir in the flour and cook, stirring, for 3 minutes. Pour in the broth and tomatoes and bring to a boil while whisking constantly. Tie the parsley sprigs, thyme, and bay leaf together with a piece of kitchen twine and add to the pot. Lower the heat and simmer for 30 minutes. Remove from the heat and allow to cool.
When the soup base is cool, remove and discard the herb bundle. Working in batches, transfer the mixture to a blender and puree until smooth. Using a sieve over a large bowl, strain the tomato puree. Return the puree to the pot and reheat over medium heat.
Whisk the heavy cream and salt into the soup and season with pepper to taste. Divide among warm soup bowls and serve immediately.