Heat the oil in a large pan on medium heat and add the chopped onions. Sprinkle with salt and cook for 5-6 minutes or until starting to soften, stirring regularly.
Stir in the sweet potato cubes, then add the chopped garlic, ginger, and chilli. Cook for a couple of minutes until the aromatics start to soften.
Bash the cardamom pods gently with the flat of your knife and add to the pan along with the ground cumin, turmeric, fenugreek, ground coriander, and bay leaves. Mix well and cook for a minute.
Give the lentils a quick rinse in a colander (optional) and add to the pan along with the water/stock and tinned tomatoes. Cover with a lid, bring to a gentle simmer, then turn down the heat and cook for 15 minutes, stirring now and then.
After 15 minutes, add the coconut milk, lime zest, and lime juice. For more flavour, stir in the squeezed lime halves and chopped coriander stems. Continue to cook for another 5-10 minutes or until the lentils and sweet potato cubes are cooked through.
During this time, add a little extra liquid if necessary to prevent the curry from catching on the bottom of the pan.
Once the lentils and sweet potato cubes are soft and cooked through, stir in the garam masala and most of the chopped coriander leaves. Cook for another couple of minutes.
Adjust the seasoning to taste and serve with boiled rice or pilau rice, fresh coriander, and an extra squeeze of lime juice.