Heat the oil in a saucepan over a medium heat, then add the onion, celery, carrot, garlic, ginger and salt. Fry for 15 minutes, stirring often, until the vegetables are glossy and translucent.
Stir in the coriander, turmeric, caraway and cardamom and cook for 1 minute. Add the lentils and 1.5 litres/2¾ pints water.
Slowly bring the soup to a gentle simmer and cook for 10 minutes, or until the lentils have softened.
Stir in the spinach and cook until it wilts, then add a few grinds of black pepper. Season with more salt and pepper if desired.
Serve in bowls with a spoonful of yoghurt, a sprinkle of lime zest and a squeeze of lime juice.