Boil the lentils in lightly salted water for about 40-60 min. They should be very soft. If you pre-soak the lentils for a few hours, you can reduce the cooking time.
When the lentils are soft, strain them but preserve the cooking water.
While boiling the lentils, start with the main dal.Add oil to a separate pot on medium to high heat. Add the cumin seeds. When they start cracking, reduce the heat and add the rest of the whole garam masala ingredients (cloves, cardamom, cinnamon and bay leaves).
Add the garlic and ginger paste and fry for a minute. It will sputter a lot.
Add the pureed tomatoes, turmeric, coriander, chili and salt.
Bring to a simmer, lower the heat and let simmer for 1-2 h.
When the dal base has simmered for 1-2 h, remove from heat.
Add the margarine, the cooked urad dal and 500 mL of the preserved lentil cooking liquid. Add more water if you don't have enough preserved liquid. Add the cooked, drained black beans.
Let the dal cool. Store in the fridge overnight to let the flavours develop.
Day 2
Bring the dal back to a simmer and add the ground fenugreek (seeds or dried leaves).
Let simmer for 30 min. The longer the better.
Stir in the cashew cream 5-10 minutes before serving.
Enjoy with rice and naan or roti.
Notes
Ginger and garlic paste: can be bought in many grocery stores among the shelves with South Asian groceries. Can be made at home by grating equal parts garlic and ginger. Vegan cream: Store bought or home made. I typically blend cashew nuts with an equal amount of water (~150 mL of each to allow the blender to run). Soaking the cashews before makes for a smoother cream.