In a large saucepan, heat oil over medium. Add onion and garlic; season with salt and pepper. Cook, stirring, until onion softens, 4 to 6 minutes. Add tomatoes and increase heat to medium-high. Cook, stirring, until tomatoes begin to break down, 4 to 6 minutes.
Add broth and 1 cup water. Simmer until tomatoes are very soft, about 10 minutes. In batches, puree soup in a blender (use caution when blending hot liquids). Return soup to pot and simmer 1 minute; stir in cream and season with salt and pepper. Remove from heat and cover to keep warm.
In a large skillet, cook bacon over medium until lightly browned but not crisp, about 5 minutes. Drain on paper towels; discard fat from skillet. Butter 8 slices bread. Place 4 slices, buttered side down, on a work surface. Top with bacon and cheese. Top with remaining bread, buttered side up. In batches, cook sandwiches in skillet over medium-low until cheese melts and bread is golden, about 5 minutes per side. Quarter sandwiches and serve with soup.
To create a velvety texture without using a lot of cream, puree the soup until smooth in a blender.