In a large heavy-bottomed pan, preferably with a nonstick surface, heat 2 tablespoons oil over high heat. When oil is very hot add chicken, a few pieces at a time, and sear until browned on all sides, about 4 minutes. Using a slotted spoon remove chicken to a plate and continue until all pieces are browned.
Add remaining oil and onions to pan, reduce heat to medium-high and fry 30 minutes until light brown, stirring constantly to prevent burning. Add garlic and ginger and fry 5 minutes. Add cinnamon and cardamom and fry 2 minutes, until spices are puffed and beginning to brown. Add turmeric and cayenne and stir rapidly 15 seconds. Return chicken to pan and stir in tomatoes, salt and 2 cups boiling water. Reduce heat to a simmer, cover and cook about 45 minutes, until chicken is tender and gravy has thickened. Check frequently, and add a little water if sauce is evaporating too quickly. Turn off heat and let dish rest, covered at least 1 hour, preferably 2. When ready to serve, reheat, fold in cumin and cilantro, and adjust seasonings if needed.