Heat oil in a large pot and add the chopped onion. Fry for 3-4 minutes until golden brown.
Now add in the chicken pieces and ginger garlic paste. Cook for a 4-5 minutes until the chicken changes color.
Add in the spices, and cook for another 3-4 minutes on medium high flame until you can see the oil coming to surface. You may add a splash of water to prevent the spices from burning.
Now add the pureed tomatoes and cook for a 1-2 minutes on high flame, while stirring constantly.
Lower the heat, add a little bit of water and cover the pot with a lid. Cook until the tomato puree is cooked, about 15 minutes, the chicken is almost cooked through, and the oil has separated from the curry.
Add the spinach and about 1/2 cup of water (you can adjust the quantity of water as needed). Cook for 10-15 minutes on medium heat until the spinach is cooked and the chicken is fully cooked too.
Crush dried fenugreek leaves with your hands, and sprinkle on top of the palak chicken. Add butter. Mix well, and take off heat.
Serve with steamed rice or naan.