Heat the olive oil and butter in a large pot over medium heat. Add the onion, carrots, garlic, and a pinch of salt and cook, stirring occasionally, for 8 minutes, or until softened.
Stir in the vinegar, then add the tomatoes, water, coconut milk, thyme, red pepper flakes, salt, and several grinds of pepper. Simmer, stirring occasionally, for 20 to 25 minutes, or until the carrots are tender.
Scoop 4 cups of the soup out of the pot and set aside. Transfer the remaining soup to a blender. Puree until smooth. Return the pureed soup to the pot with the reserved 4 cups of chunky soup. Stir to combine and season to taste.
Ladle into bowls and serve with a drizzle of coconut milk, a drizzle of olive oil, freshly ground black pepper, and fresh basil leaves for garnish.