Preheat your oven to 400°F (200°C) and line a baking sheet with parchment paper.
Halve the Roma tomatoes lengthwise and place them cut-side up on the baking sheet. Add the quartered onion and garlic cloves.
Drizzle everything with olive oil, sprinkle with salt and pepper, and toss gently to coat.
Roast for 25-30 minutes until the tomatoes are soft, lightly caramelized, and slightly blistered.
Sauté the Aromatics
Heat 1 tablespoon olive oil in your Dutch oven over medium heat.
Add the chopped carrots and sauté for 5-7 minutes, stirring occasionally, until softened.
Add the roasted onion and garlic from the baking sheet, and stir to combine.
Build the Soup Base
Transfer the roasted tomatoes to the Dutch oven along with any juices from the baking sheet.
Pour in the vegetable stock and add the thyme and basil leaves. Stir to mix.
Season with salt and pepper to taste. Simmer over medium-low heat for 10 minutes to allow the flavors to meld.
Blend the Soup
Remove the Dutch oven from heat. Use an immersion blender to puree the soup until smooth.
Alternatively: Transfer the soup in batches to a regular blender. Be cautious blending hot liquids—let it cool slightly and don’t overfill the blender.
Return the blended soup to the Dutch oven if using a regular blender.
Add the Cream and Adjust Seasoning
Stir in the heavy cream (or coconut milk) and simmer for another 2-3 minutes.
Taste and adjust seasoning. If the soup is too acidic, add 1 teaspoon sugar.
Serve and Garnish
Ladle the hot soup into bowls and garnish with freshly grated Parmesan, a drizzle of olive oil, and fresh basil leaves.