Heat the butter and avocado oil in a large thick-bottomed pot (I use my Dutch oven) over medium-high heat. Add the chopped onion and carrots and sauté, stirring occasionally, until the vegetables have softened, about 8 to 10 minutes. Stir in the garlic and continue sautéing another 2-3 minutes, until the garlic is fragrant.
Pour the whole tomatoes (including their juices), chicken broth (or vegetable broth or water), and full-fat canned coconut milk into the pot. Cover and bring the soup to a full boil. Remove the lid and reduce the heat to a gentle boil and cook, stirring occasionally, for 20 minutes. Note: if you're using heavy cream instead of coconut milk, add it at the end of the 20-minute cooking process.
Stir in the fresh basil leaves and sea salt. Let soup cool for 15 to 20 minutes or until it is no longer hot.
Use an immersion blender to blend the soup, or transfer the soup to a blender and blend for 1-2 minutes, or until creamy. Only use a blender if you have a quality blender you trust, with a lid that has a removable insert to let steam escape. Many older blenders are notorious for blowing their tops off when hot liquid is put inside. Certain brands of modern blenders, such as KitchenAid, Wolf, BlendTec, and Vitamix can handle warm liquid, although the center insert of the lid should always be removed, and the speed should always be low. If you have any doubts as to whether or not your traditional blender can handle this creamy tomato soup recipe, allow it to cool completely to room temperature or lower before blending it.
Once blended, taste the soup for flavor and add sea salt and black pepper to your personal taste. You can stop here, or strain the soup using a fine strainer to make it silkier. You can also follow the instructions below to thicken the soup.