For the marinade combine all ingredients in a food processor or blender and puree.
Toss the chicken with the marinade and refrigerate for at least one hour and up to overnight.
Preheat oven to 350°F.
Remove chicken from the marinade and arrange them in an oven safe dish lightly coated with cooking spray. Cover with a lid or aluminum foil and bake until cooked through, approx. 20 minutes.
While chicken is baking puree the onion, garlic, and ginger in a food processor or blender and set aside.
Combine the oil and cinnamon stick in a large saucepan over medium high heat. Cook, stirring, until the cinnamon stick unfurls, 1-2 minutes. Add the onion puree and salt. Cook, stirring, until it turns light golden brown, about 20 minutes. Add a teaspoon of water as needed to keep the onion mixture from sticking and burning.
Add the coriander, cumin, turmeric, and cayenne. Cook, stirring, one minute. Add the pureed tomatoes and simmer 10 minutes. Add the milk, bring back to a simmer then reduce heat.
Add chicken breast to sauce and stir gently. Warm over heat for 5 minutes. Sprinkle with fresh cilantro and serve immediately.