Take whole urad and rajma in a colander and rinse under running cold water until water runs clear. Massage the lentils lightly using fingers while rinsing. Alternatively, you can rinse them in a bowl 2-3 times until the water is not cloudy anymore.
Soak in enough water (2 inches above the lentils) for 8 hours or overnight. They will get doubled in size.
Drain and discard the soaking water. Take soaked lentils in a pressure cooker (or instant pot) along with fresh water.Stovetop pressure cooker: Cook on medium heat for 10-12 whistles (that is about 15 minutes).Instant pot: Cook on manual (high pressure) for 20 minutes.
Let the pressure go down by itself and then open the lid. Check by pressing a lentil or bean, it should mash easily without any effort.
Heat the oil in a pan on medium heat. Once hot add whole spices (cloves, cinnamon, black cardamoms, bay leaf). Saute for 40-60 seconds or until spices are aromatic.
Add chopped onion and sprinkle a little salt to speed up the cooking process. Cook for 5 minutes or until onions is soft and light brown in color.
Add ginger-garlic paste. Saute for a minute or until the raw smell of ginger garlic goes away.
Add tomato puree and slit green chili. Cook until most of the water is evaporated and it becomes a thick paste.
Add red chili powder and smoked paprika. Mix and cook for a minute.
Add boiled lentils, remaining salt and little more water. Mix well and let it comes to a boil.
Add butter and let it simmer on low heat for 25-30 minutes. Do stir in between to make sure that it is not sticking to the bottom of the pan. If it looks too thick then you can add a splash of more water.
Add garam masala and crushed kasoori methi. Mix well.
Add heavy cream. Mix and again simmer for 10 minutes on low.
Lastly, garnish dal makhani with freshly chopped cilantro.
Dhungar Method (Optional)
This method is used instead of adding smoked paprika.
Heat the small piece of natural lump charcoal on open flame until it is red hot.
Meantime place a steel bowl (katori) in the center of the pan. Place this hot charcoal in a steel bowl.
Drizzle a teaspoon of ghee on the hot charcoal. Immediately you’ll notice the fumes coming out.
Cover the pan right away to trap the fumes. Let it rest for 2-5 minutes. Do not go above 5 minutes.
Notes
Soaking lentils for at least 8 hours is recommended. When properly soaked lentils are cooked they get a creamy, soft texture. So the quick soaking method won’t work here.
Pressure cooking lentils until soft before adding to cooked onion-tomato masala is highly recommended. Even slightly undercooked lentils won’t give the right texture.
Simmering on low for at least 30 minutes is highly recommended. You can go up to 90 minutes on simmer. More the better. Slow simmer brings out the best texture of dal makhani. Plus, whole spices are simmered for longer and those impart a nice aroma to the dish.
Do not reduce the amount of butter and heavy cream. This is not your everyday kind of dish. Dal makhani is high calorie, special occasion dish so enjoy its best taste.
Smoking the dal makhani with dhungar is optional. I used to do infuse it using charcoal, but nowadays I use smoked paprika to get the smokey flavor.
Charcoal: Always use natural lump charcoal. Never use instant charcoal briquettes that have chemicals in them. It will ruin the flavor and taste of dal makhani.