Wash and rinse urad dal (whole black lentil) and rajma (kidney beans) in a large bowl. Soak in 3 cups water overnight.
In the morning, drain the water in which the dal and rajma was soaked. Transfer the dal and rajma to a pressure cooker with 1 teaspoon salt. Add around 3.5 cups water. Pressure cook on high-medium heat for 10 whistles, then lower the heat to low-medium and cook for another 10 minutes. In total around 15 to 20 whistles.
Let the pressure release naturally. The dal and rajma should be completely cooked and you should be able to mash them with your fingers. If using the Instant pot, pressure cook the lentils on high pressure for 30 minutes with natural pressure release.
Mash some of the dal and rajma using a potato masher. Then turn on the heat to lowest heat and let the dal simmer while you make the masala.
To make the masala, in a large pot/pan, heat 2 tablespoons butter (I use and recommend amul salted butter here) and 1 tablespoon ghee on medium heat.
Once the butter melts and is hot, add the finely grated onion.
Cook the onion for around 6 to 7 minutes or until it turns light golden brown. Keep stirring it continuously so that it doesn’t burn and keep heat on medium.
Add the ginger garlic paste and cook for 1 to 2 minute until the raw smell goes away.
Add the tomato puree and mix.
Cook for 2 minutes or until the puree mixes well with masala and oil starts oozing out from the sides.
Add in the boiled dal (which had been simmering for around 10 to 15 mins you were making the masala) and mix. Add garam masala, kashmiri red chili powder and salt. Mix to combine.
Add 1/2 cup water, stir and set heat to low.
Let it simmer on low heat uncovered for around 45 minutes. Stir often (every 10 minutes or so) else dal will stick to the bottom of the pot. You will also need to add water. I added total of 1.5 cups water as the dal was simmering.
Add sugar and mix after the dal has simmered for 45 minutes.
Also add the remaining 1 tablespoon 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. You may serve the dal at this point or do the additional step of giving it a smokey flavor.