Cut chicken into 1½ inch thin pieces.
In a mixing bowl combine chicken with all the marinade ingredients.
Marinate chicken for at least half an hour or up to 24 hours for the best results.
Heat oil in a pan and fry onion until sautéed. Add garlic and ginger, fry for 2 minutes on low heat.
Add all the spices except Kasuri Methi and Garam masala and fry for another minute and then add tomatoes.
Add 1¼ cup of water, once the water starts to boil, cover and cook on low heat for 30 minutes.
While the sauce is simmering, you can cook the chicken. Heat oil in a pan or skillet.
Put chicken in the pan but make sure the pan is not too overcrowded. Turn the sides to get nice colour on each side.
Take the cooked chicken out and set aside.
Pour the sauce in a blender or using a stick blender puree it. Pour it back into the same pot using a sieve. Using a spatula make sure all the liquid is strained leaving behind only fiber from tomato and onion. Discard that.
On medium low heat allow the sauce to heat up again and then add the grilled chicken.
Add cream gradually while stirring the sauce. Make sure the cream is at room temperature, not cold straight from the fridge.
Lastly add butter and some kasuri methi (dried fenugreek leaves) and garam masala.
Taste test at this stage and add more salt if required. Once the sauce starts bubbling its ready.
Drizzle a little bit cream and garnish with finely chopped corriander/cilantro
Serve with steamed rice or naan.