In a Dutch oven heat the oil. Add the onion and cook until nicely browned around the edges, about 7 minutes. Add garlic and ginger and cook for 1 minute. Add coriander, cumin, turmeric, cayenne and
Black pepper and stir for 1 minute. Add salt, tomato and water and cook over medium-low heat, stirring constantly, until the tomato is softened. Add the chicken and simmer, uncovered, stirring occasionally, for 15 minutes.
Add the coconut milk and simmer, partially covered, for another 15 minutes, or until the gravy thickens and the chicken is cooked. Add the cinnamon and cloves and simmer another minute.
Remove the chicken from the heat and garnish with the cilantro. Serve with steamed basmati rice.