Combine all the marinade ingredients throughly. Add in chicken and mix well so that all the pieces are covered. Marinate for at least an hour and up to overnight.
Heat olive oil in a large pan over medium high heat. Add marinated chicken and cook for about 6 minutes, cook in batches to make sure chicken gets color. Remove and set aside.
Lower to medium heat and butter to the pan. Cook onions for 5 minutes until tender.
Add garlic and ginger and cook for one minute. Next, add in spices and cook for an additional minute.
Pour in diced tomatoes and cook for 10 minutes.
Carefully transfer tomato mixture to a blender and blend until smooth.
Pour sauce back into the pan and add in the chicken pieces and heavy cream. Cook for 10 minutes.
Serve with basmati rice and garnish with a drizzle of heavy cream and cilantro (coriander leaves).