Step 1: 1. In large pot, sauté onions, garlic and ginger in olive oil for about 5 minutes.
Step 3: 2. Add the water, lentils, chickpeas, cannellini beans, tomatoes, carrots, celery, garam masala, cardamom, cayenne pepper and cumin. Bring to the boil for a few minutes then simmer for 1 to 1½ hours or longer, until the lentils are tender.
Step 5: 3. Purée half the soup in a food processor or blender. Return the puréed soup to the pot, stir and serve.