Add the black lentils and red beans to a large bowl; fill the bowl with room temperature water and soak overnight (8 to 12 hours).
The Day Of:
Cook the beans. Rinse and drain the legumes next day, picking out any impurities (such as small pieces of rock). Add them to a 5-quart pot along with the vegetable stock. Bring up to a boil, then cover the pot, turn heat down to simmer, and cook 1 hour, stirring occasionally.
Create the base flavor.Caramelize the onion. While the beans cook, heat the ghee in a large skillet over medium to medium-high heat. Add the onion and cook until soft and deep caramel in color, about 15 minutes, stirring occasionally. You can add a splash of water or turn the heat down at any point if the onions start to get too dark or the pan starts to get too hot.Add the aromatics. Once the onion is caramelized, turn the heat to medium (if it wasn’t there already) and add the garlic and ginger; cook 1 minute, stirring constantly.Sauté the spices. Add the bay leaf, cinnamon stick, cardamom pods, cloves, red chilies, garam masala, coriander, cumin, Kashmiri chilli powder, sweet paprika, fenugreek, and black pepper. Cook until fragrant, about 20 seconds, stirring constantly. Remove from the heat.
Incorporate the spiced caramelized onions into the beans. After the lentils and beans have cooked for 1 hour, stir in the onion/spice mixture, the diced tomatoes, and the tomato paste.Gently simmer (uncovered) until the sauce is somewhat thickened and the lentils and beans are fully tender, about 45 minutes to 1 hour, stirring frequently. (TIP: You can cover the pot or add a splash of water or stock if the sauce gets too thick before the lentils and beans are tender.)
Finishing touches and serve. Turn off the heat and stir in the butter and cream. Serve topped with any garnishes you like, along with rice or Indian bread.