Heat oil in a large pan over medium heat; fry the chicken pieces until browned, about 8 minutes per side. Set the chicken aside.
Place the spinach into a large pot with 60ml of water; bring to the boil, cover the pan and remove from heat. After 10 minutes, transfer the spinach into a blender and process until very finely chopped. Set the spinach aside.
Place the onions, garlic and ginger into the pan; fry over medium heat, stirring frequently, until lightly browned, about 10 minutes. Pour in the tomato passata, ground coriander, cayenne pepper, turmeric, cardamom, cloves and salt; stir in 1 tablespoon water; cook, stirring frequently, for 10 minutes. Pour in the milk, stir to combine and return the chicken pieces to the pan. Bring the mixture to a simmer, reduce heat, cover and simmer until the chicken is tender, about 20 minutes. Stir the spinach and garam masala into the pan and cook until the spinach starts to stick to the pan, about 15 minutes.
Stir in soured cream and bring the mixture just to a simmer. Remove from heat and stir in butter.