Preheat oven to 400 degrees Fahrenheit. Line a large cookie sheet with aluminum foil or parchment paper.
Cut the tomatoes lengthwise and baste evenly with 1/4 cup of olive oil. Sprinkle with salt and pepper.
Roast for 45 minutes in the oven. When done, remove from oven.
In a large dutch oven, heat the remaining 2 Tablespoons of olive oil and 1 Tablespoon of butter over medium heat. Add the chopped onions and garlic and saute until the onions are translucent and start to brown, for about 10 minutes.
Add the canned tomatoes with the juice, basil, thyme, roasted tomatoes, and chicken stock to the dutch oven. Add in the salt and pepper and bring the soup to a simmer and cook for 40 minutes, uncovered.
Transfer soup to a blender in batches and puree until smooth.
Add the pureed soup mixture back to the dutch oven and add in the heavy cream and 1 Tablespoon of butter. Set the heat to medium and bring to a low boil. Lower the heat and simmer for 10 more minutes, stirring occasionally. Taste and add salt and pepper as needed.
Once done, ladle the soup into bowls and top with Parmesan cheese, fresh basil, or sour cream.