Preheat your oven to 400°F/200ºC.
Cut the tomatoes in half lengthwise (leave small tomato varieties whole), remove the stem, and place them on a parchment-lined rimmed baking tray in a single layer along with the peeled garlic cloves. Drizzle with 3-4 tablespoons olive oil and season with salt and pepper. Bake for 45 minutes.
When the tomatoes have about 15 minutes left in the oven, heat a Dutch oven (or another large pot) over medium heat and add 1 tablespoon of olive oil. Once hot, add the diced shallot and cook for 10 minutes, stirring occasionally. Season with salt & pepper and stir in the tomato paste. Cook for another 2-3 minutes.
Remove the roasted tomatoes from the oven and add them to the soup pot along with the garlic (plus the juicy bits on the baking sheet), broth, fresh basil, and thyme leaves. Cook over medium-high heat for about 5-8 minutes. Turn off the heat.
Go in with an immersion blender until you’ve reached your desired consistency - either completely smooth or with a little texture. Season with more salt and pepper to taste and stir in the vegan butter if using. Serve with any optional add-ins such as cashew cream, coconut cream, or non-dairy milk, and drizzle with more olive oil.
Let the soup cool to room temperature before storing it in an airtight container in the fridge for up to 5 days or in a freezer-safe container in the freezer for up to 3 months.