Combine all ingredients in a zip-top bag or shallow baking dish, massaging the marinade into the chicken. Let stand at room temperature while you prepare the sauce.
For the Sauce:
In a Supreme Casserole heat the oil over medium heat. Add onions and slowly cook until golden, about 20 minutes, reducing heat if they are getting crispy or browning quickly.
Add garlic and cook until fragrant. Stir in garam masala, paprika, cinnamon and salt; cook 1 minute more. Add tomatoes; cook 2 minutes, then add cream and carefully puree using an immersion blender.
Return sauce to a Supreme Casserole and bring to a simmer. Remove chicken from marinade and add it to the sauce (discarding remaining marinade). Cover, and simmer over medium-low heat until cooked through, about 12 minutes. (A gentle simmer is required to gently cook the breasts so they don’t become tough, and you don’t want to overcook them.)
Stir in butter, taste and add more salt to taste. Serve sprinkled with cilantro and rice or naan bread if desired.