Make the soup. Melt butter in a large Dutch oven over medium heat. Add onion, cooking until soft and translucent (if it starts to caramelize, turn down your heat), 7-8 minutes. Add garlic, thyme, and red pepper flakes, cooking until fragrant, 1 minute. Cook until onion is completely soft and translucent, 10–12 minutes. Season with salt and pepper. Add tomato paste and cook, stirring often, until paste has darkened and caramelized, 3-4 minutes.
Add canned tomatoes. Take a mental note of roughly where the height of the soup hits on your pot. Add honey and 6 cups water (could also use chicken or vegetable stock, though not necessary) to pot. Increase heat to high; bring to a boil then reduce to a heavy simmer (don’t season at this point, the soup needs to reduce). Simmer until soup reduces by 6 cups (the same height of the soup before the water was added), 40-45 minutes. Remove soup from heat; let cool slightly. Purée the soup with an immersion blender or work in batches and puree in a high speed blender. Return soup to pot if using a high speed blender.
Over medium low heat, stir in heavy cream. Simmer until warmed, 4 minutes. Season to taste with salt, pepper, and more honey, if necessary. Keep warm.
Meanwhile, make the croutons. Place a rack in the upper third of your oven and preheat to a high broil. Arrange slices of sourdough on a sheet pan. Drizzle with olive oil. Broil until top side is golden brown, 1-2 minutes (depending on the strength of your broiler). Remove sheet pan from oven and flip over bread slices. Repeat on remaining side. Remove from oven and rub the interior of the garlic clove over the toasted bread. Divide cheeses between bread slices and top with thyme leaves and pepper flakes. Put back under the broiler until the cheese melts, 2-3 minutes. Transfer bread slices to a cutting board and cut into small squares.
Ladle soup into bowls, drizzle with cream and top with croutons and more pepper flakes. Serve immediately.