Preheat the oven to 375°F. Arrange the halved Roma tomatoes on a baking sheet, drizzle them with olive oil, and sprinkle with salt and black pepper. Roast for 1 hour, then set aside.
In a large soup pot or Dutch oven, heat 2 tablespoons of butter or olive oil over medium-high heat. Add the diced onion and sauté for 5 minutes until softened.
Stir in the garlic, fresh thyme, salt, and black pepper. Cook for an additional minute to release the flavors.
Add the crushed San Marzano tomatoes, sugar, and fresh basil. Reduce the heat and let the mixture simmer gently for 10 minutes.
Incorporate the roasted tomatoes and chicken stock into the pot. Stir occasionally and simmer for 30 minutes to meld the flavors.
Purée the soup using an immersion blender, or carefully process in batches using a countertop blender. Return the smooth soup to the pot.
Stir in the heavy cream until well combined, allowing the soup to warm through without boiling.
For optional croutons, cube a few pieces of bread and toss with olive oil, minced garlic, and chopped basil. Bake at 400°F for 7 minutes until crisp.