Prepare the ginger and garlic paste by blending 2 tablespoons of vegetable oil with 3 garlic cloves (skins removed) and a peeled thumb sized piece of ginger in a food processor.
Add 75ml vegetable oil to a medium pan over a low heat. When the oil starts to shimmer, add the sliced onions and cook for about 30 minutes, stirring regularly, until the onions are browned and caramelised but not burnt. This takes a bit of time, but adds depth of flavour to the dish. Add a splash of water if it looks like it is getting too brown.
Add in the garlic and ginger paste, mustard seeds and coriander seeds and cook for a further 2 minutes.
Add the tomato puree, the remaining spices and salt and cook for another 5-10 mins until the oil is absorbed, stirring regularly.
Meanwhile wilt the spinach in a pan of salted water for 2 minutes. Remove from the heat and add to a bowl of iced water to stop the cooking process.
Drain the spinach in a colander and squeeze out as much of the water as you can. Add to a food processor and blitz until smooth.
Add the blended spinach to the pan and stir until everything is combined. Add a splash of water if it’s looking too thick.
Heat 2-3 tablespoons of vegetable oil in a separate non-stick frying pan. When the surface of the oil shimmers, add your cubes of paneer. Fry for a few minutes on each side until the paneer is evenly browned. Remove from the pan and set aside.
Add the cream and butter to the curry and mix well. Add the fried paneer and stir through the curry, making sure not to break up the delicate cheese.
Top with fresh coriander leaves and serve immediately alongside basmati rice and naan bread.