Fry the chicken lightly in 4 tbsp of oil for 3-4 minutes until lightly browned and set aside.
Put the spinach into a deep pan, add 1/4 cup water. Bring to a boil and remove from heat. When cool, grind in a blender and set aside.
Heat the remaining oil and add ginger, garlic and onions. Saute until lightly brown. Add tomatoes, salt cayenne, coriander powder, turmeric, cloves and cardamom. Sprinkle with one tablespoon water. Cook for 10 minutes over low heat. Add chicken and milk. Simmer until the chicken is tender.
Add spinach and garam masala. Cook until spinach starts sticking to the pan. Remove from heat. Add butter and keep covered until ready to serve.