Wash and rinse urad dal (whole black lentil) in a large bowl. Soak in enough water overnight.
In the morning, drain the water in which the dal was soaked. Transfer the dal to a pressure cooker with 3 cups of water and pressure cook on medium heat for 3-4 whistles.
Let the pressure release naturally. The dal should be completely cooked and you should be able to mash them with your fingers.
To make the masala, in a heavy bottom pan, heat 2 tbsp butter on medium heat. Once the butter melts and is hot, add the ginger garlic paste and cook for 1 to 2 minute until the raw smell goes away.
Add kashiri red chilli powder and cook for 30 sec and then add the tomato puree and mix. Cook for 2 minutes or until the puree mixes well with masala and butter starts oozing out from the sides.
Add in the boiled dal, 2 tbsp of butter and mix. Let it simmer on low heat uncovered for around 35-45 minutes.
Add garam masala, kasuri methi, 1 tbsp of butter and salt. Mix to combine.
Stir often else dal will stick to the bottom of the pot. Add water if you need while simmering.
Also add the remaining 1 tbsp butter and 1/4 cup cream. Mix well.
Simmer for 10 more minutes on low heat after adding the cream. Dal will become really creamy by now.
Garnish dal makhani with more cream and serve with a pat of butter. Enjoy!