Pick rinse and add the lentils to a large bowl. You can use a mix of urad dal and red kidney beans or rajma. Pour enough water to soak the lentils and leave overnight or 8-12 hours.
Drain, add fresh water and pressure cook with a pinch of salt for 12 whistles or 20-25 minutes in medium high heat. The dal should get cooked really well here. Once done, try mashing the few lentils with your fingers. If the dal is not well cooked, add 1 cup or 2 cups of water and pressure cook for 5-6 more minutes.
Once the pressure is released, mash the dal well, add 1 cup water and simmer for around 30 minutes or until we prepare the masala.
To make masala for dal makhani heat 4 tablespoons butter and 2 tablespoons ghee over medium heat in a heavy pan. Add cumin seeds and let splutter. Add chopped onions and saute for a minute. Next add slit green chilies and saute.
Next add minced ginger garlic or ginger garlic paste. Saute well. Next in goes the tomato puree.
Add red chilli powder, turmeric powder and garam masala powder. Mix well and cook in medium flame.
Keep cooking until the raw flavor of garam masala powder leaves.
Continue till the tomato puree is well cooked and leaves fat from the sides of the pan.
Add the simmering lentils along with the water to the cooked masala. Keep mashing every now and then.
Add salt to taste.
Add more water say 1 cup or 1.5 cups and begin to simmer. The dal will absorb water as it cooks, so make sure to check and add water as needed.
Simmer for 1 to 2 hours (2 hours recommended). Finally stir in 1/4 cup cream and mix well. After adding cream simmer for 5-6 minutes. Add chopped cilantro leaves and mix well.
Serve dal makhani with more cream and a pat of butter.