Heat the oil in a large pot over medium heat, and cook the onion until golden brown. Season with salt and pepper. Mix in tomatoes, spinach and dal, and pour in water. Season with basil, cardamom, cumin, cayenne pepper and curry powder. Bring to the boil, reduce heat to low, and simmer 25 minutes, stirring occasionally, until lentils are tender.
Transfer the soup to a blender (or use a hand held blender), and blend until smooth before serving.