1. To prepare chicken, combine garlic, ginger, and onion in food processor with a touch of oil and pulse until a paste consistency. Transfer paste to medium bowl.
2. Add chicken, yogurt, and spices. Mix thoroughly and let sit 15-20 minutes.
3. To prepare curry, combine garlic, ginger, and onion in food processor with a touch of oil and pulse until a paste consistency. Transfer paste to large skillet over medium-high heat.
4. Add oil and butter and cook, stirring constantly, until fragrant but not browning, about 2 minutes. Add hot pepper (if using) and spices and cook 1 minute longer.
5. Reduce heat to medium, add tomato sauce and chicken, and cook 5-6 minutes until chicken is cooked through. Add splash of water if necessary, in order not to burn chicken or sauce.
6. Add heavy cream, ketchup, salt, and pepper and simmer 8-10 minutes until a nice gravy consistency. Season to taste and garnish with cilantro. Serve immediately with naan and Basmati rice.