Drain the water from the soaked lentils and add them to a pot with 1/4 teaspoon salt and 4 cups water. Bring this to a boil and then reduce the flame to a simmer. Cover and cook for an hour till the beans can be easily smashed between your fingers. Alternatively, you can cook it in a pressure cooker for about 6-8 whistles. Ensure that the dal is completely submerged in water and there is at least an inch of extra water above the dal.
Once the beans are cooked, lightly smash them with a potato masher, making sure to leave them partially intact.
Heat ghee in a pot and add bay leaf, cinnamon, cloves and cardamom. Saute them for a minute or two till you can smell the spices and add ginger garlic paste, green chilli and onions to the pot. Cook this till the onions turn translucent.
Add the tomatoes (blended), red chilli powder, salt and garam masala. Cook till the tomatoes are mushy, and add the cooked lentils with 1 cup water. Bring this to a boil and then reduce to a simmer. Cook for 20 minutes or till the dal has thickened, making sure to stir occasionally because the dal tends to stick to the bottom.
Mix in the heavy cream, butter and kasuri methi. Switch off the flame and let the dal makhani rest for 15 minutes before serving, topped with more cream. Dal Makhani is ideally made the previous day to let the flavors mingle.