In a bowl, take yogurt and the spice powders with salt and Ginger garlic paste. (first 11 ingredients in list).Squeeze the lemon juice and Mix well to make a paste without adding any extra water.
Wash the chicken well pat dry to remove excess water.
Add the chicken to the marinade and mix well with hands. Optionally you can some orange food color to get the restaurant touch.
Let it sit in the fridge for 2 - 3 hours or atleast minimum one hour.
Soak cashewnuts for 15 - 20 minutes and grind them to a smooth paste.
Scald the tomatoes and deskin them. Puree them. Grind one medium sized onion.
After an hour place the chicken on a greased baking tray and cook in the preheated oven at 180 - 200 deg C for 15 minutes. Flip the chicken once in between.
There should be lot of juices coming out from the chicken. So by the time you flip the chicken in between you can remove the juices from the tray and secure it to add to the gravy later.
Remove from the oven and baste with oil / butter and again roast it for 3 - 4 minutes.
If you dont have an oven, simple pan fry the chicken until it is almost cooked and charred here and there.
When the chicken is getting cooked in the oven, you can prepare the makhni sauce.
In a pan melt the butter and add cloves, cardamom and mace to it. Then add the onion paste and start sauting.
When the onion is well sauted and turns slightly brown, add the spice powders.
Cook the spice powders along with the onion paste for a minute and then add the tomato puree. Mix well and close the pan and let the tomato cook for 5 - 6 minutes.
Once the tomatoes are cooked well and kind of oil separates, add the cashew paste and cook for 2 - 3 minutes. Add some sugar and mix well. You can also add honey. It balances the flavor well.
Add half a cup of water and when it comes to a boil add crushed kasuri methi and mix. Sprinkle some garam masala and stir well.
Now adjust water in the gravy and add the roasted chicken pieces.
Mix well, lower the flame and close the pan and let it simmer for 5 - 6 minutes until chicken absorbs all the flavors.
Lastly add cream and mix well. Turn off stove in a minute. Do not overcook after adding cream else it would curdle.
Transfer to a serving bowl, garnish with cream and onion rings. Serve with hot rice rice / roti / naan / kulcha..