In a large pot, heat 1 tbsp olive oil over medium-high heat. Add onion and garlic and cook until soft, 4 minutes. Season with salt and pepper.
Add tomatoes and juices, gently crushing whole tomatoes with a wooden spoon. Add 2 cups water, ¼ cup basil, bring to boil.
Reduce heat to low and simmer, partially covered, until thickened slightly, 20 minutes. Stir in balsamic vinegar, remaining ¼ cup basil, and season with salt and pepper.
If using an immersion blender, puree soup in pot. (Or, carefully transfer about half of soup into blender. Press down firmly on lid and pulse mixture several times, gradually increasing speed to high. Puree until smooth, then transfer to clean pot. Puree remaining tomato mixture and transfer to new pot. Stir in coconut milk, over medium heat, and bring o simmer. Remove from heat and cover with lid.
Ladle soup in bowls, drizzle with a bit of coconut milk, and garnish with basil leaves.