Preheat your oven to 200°C (400°F).
Halve the fresh tomatoes and place them on a baking tray along with garlic cloves and thyme sprigs.
Drizzle olive oil over and season with salt and black pepper.
Roast the tomatoes and garlic for 30-35 minutes until caramelized and soft.
While tomatoes roast, melt butter in a large pot over medium heat and sauté diced onion until translucent.
Add tomato puree to the onions and cook for 1-2 minutes.
Remove roasted garlic skins and add roasted tomatoes, garlic, and thyme to the pot.
Pour in chicken stock (or vegetable stock) and bring to a simmer for 10 minutes.
Remove thyme sprigs and blend the soup with fresh basil leaves until smooth.
Adjust seasoning with salt, pepper, and balsamic vinegar.
Serve hot with grilled cheese sandwiches if desired.