Heat 2 tbsp of oil in a thick bottomed pan/kadhai on medium high heat. When hot temper with bay leaf and cardamoms and saute for few seconds.
Add the chopped ginger and garlic and saute for 20-30 seconds
Then add in the chopped onions and saute for 4-5 minutes until soft and translucent.
Now stirr in the chopped tomatoes and fry until the tomatoes are soft and mushy. Take it off the heat and transfer the mixture in a blender except the bay leaf(leave it in the pan). Let it cool for 8-10 minutes, then ground it into a coarse paste.
In the same pan heat the rest of the oil on medium low heat and slowly pour in the ground mixture and saute for 1 minutes. (***Check notes)
Next add chopped green chillies, chilli powder, turmeric powder, coriander powder and salt. Saute on medium low heat for 3-4 minutes until you see oil separating from sides.
Add the kasoori methi to the onion-tomato masala and mix it well.
Slowly pour in the milk and mix everything well bring it to a slow boil.
Now turn the flame to the lowest setting and slowly slide in the eggs. cover and cook for 5-6 minutes so that the eggs start soaking the flavours of the spices.
Finally pour the cream, garam masala, sugar/sweetener/jaggery (if using) and give a good stir. Simmer for another 4-5 minutes on low heat folding the eggs very gently once or twice in between to coat them evenly with the gravy.
Garnish with chopped coriander leaves and take it off the heat. Serve it hot with rice and paratha.