Spritz a large nonstick saucepan or flame-proof casserole dish with oil and place over a medium-high heat. Fry the onion for about 2 ½ minutes or until pale golden brown, stirring constantly. Stir the sweet potatoes, carrots, garlic, ginger, chilli, cumin, coriander, turmeric and cayenne pepper. Cook together for 30 seconds, stirring constantly.
Tip the lentils into the pan with the spiced onion mixture, add the chopped tomatoes and pour over the stock. Stir well and bring to the boil. Skim off any foam that rises to surface with a spoon and discard. Add the salt, stir well and reduce the heat to low.
Simmer gently for 10 minutes, stirring occasionally. Add the cauliflower and cook for 10 minutes more or until the lentils are just tender and breaking apart, stirring occasionally. Stir in the beans and cook for a further 8-10 minutes, stirring regularly.
This curry will continue to thicken after it has been taken off the hob. If making in advance, you may need to add a little extra water when you come to reheat it. Season to taste with salt and freshly ground black pepper. Serve with fat free yogurt and freshly cooked basmati rice.
See more Indian recipes