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 2 cups of chopped onions and 6 cloves of minced garlic to the dutch oven and sauté until the onions are translucent and start to brown, about 10 minutes.
Add the 28 ounce canned tomatoes with the juice, 4 cups of fresh basil, 1 teaspoon of fresh thyme, all the roasted tomatoes, and 4 cups of chicken stock to the dutch oven.
Add in 1 teaspoon of salt and ½ teaspoon pepper. 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 ½ cup 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.