Soak lentils in a saucepan of water for 1 hour. Bring to the boil for 5 minutes. Drain.
Heat cinnamon, chilli powder, coriander, cumin, turmeric, nutmeg, paprika, black pepper, cayenne, cloves, allspice and bay leaves in a large pan over medium heat, stirring occasionally, until fragrant, about 5 minutes.
Stir olive oil into the pan. Add tomatoes, ginger paste and garlic; simmer until flavours combine, about 10 minutes. Stir in sugar and salt. Cook until mixture thickens into a pulpy sauce, about 5 minutes. Add lentils and simmer until tender, about 5 minutes.
Stir cream and butter into sauce. Cook until sauce thickens and lentils are very soft, about 30 minutes. Squeeze some lime juice over each serving.