Preheat oven to 400°F. Line a large cookie sheet with aluminum foil or parchment paper.
Cut the tomatoes lengthwise and baste evenly with ¼ cup of olive oil. Sprinkle the tomatoes generously with salt and pepper.
Roast the tomatoes for 45 minutes in the oven. When done, remove the cookie sheet 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 to the dutch oven and saute until the onions are translucent and start to brown, 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 the mixture 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 to medium-low 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.