Add tomatoes to a blender jar with their juices. Rinse out now-empty tomato can with 1 cup water, swish it around to collect more tomato flavor in the water, then add water to the blender. Blend tomatoes on high speed into a very smooth puree, about 1 minute.
Set a fine-mesh strainer over a bowl and pour tomato puree through strainer. Add remaining ½ cup (120 ml) water to now-empty blender and blend briefly to gather any remaining tomato liquid; pour that liquid through strainer. Using the back of a metal ladle, press tomato puree through strainer; scrape the puree that collects on bottom of strainer into bowl. Set strained puree aside and discard any remaining pulp left in strainer.
In a 6-quart saucepan or Dutch oven, heat ghee or oil over medium heat until just shimmering. Add shallot and cook, stirring frequently, until softened, 4 to 5 minutes.
Add ginger and cumin and cook, stirring frequently, until aromatic, about 30 seconds.
Stir in strained tomato puree, chile powder, and salt, then cook until it just comes to a boil, 5 to 7 minutes.
Reduce heat to medium-low to maintain a gentle simmer, then vigorously shake can of coconut milk to combine fats and liquids before opening. While stirring constantly, slowly pour coconut milk into simmering soup. Raise heat to medium-high heat and return soup to a simmer. Once simmering, immediately remove from heat. Do not let soup boil, as this may cause fat in coconut milk to separate. Taste soup: Season to taste and, if too tart, add sugar to taste.
Serve in a bowl as-is or pour over hot white Basmati rice. Drizzle with melted ghee and sprinkle with cilantro (if using) before serving.