Heat a large sauce pan or pot on medium heat with 3 tbsp butter, add the finely chopped onions and a pinch of salt. Saute until they they turn translucent.About 5-8 minutes.
Add 1 Tbsp minced garlic and 1 Tbsp minced ginger and cook for another minute or so till fragrant.
Add 1 tsp each of garam masala, kashmiri chilli powder, cumin powder, fenugreek leaves, and 1/4 tsp turmeric. Cook for a minute. If it looks like the spices are burning, add a tsp or two of water.
Add 2 tsp tomato paste, 1 tsp salt, and 1/4 cup cashews. Cook for another minute.
Add 1 cup water, and bring to simmer. Cover, turn the heat to medium low and cook for about 25-30 minutes. Check every 5 minutes or so to make sure the curry isn't sticking or burning. Add more water if the curry is looking too dry.
Turn off the heat. Wait for the mixture to cool down, and then blend till smooth. (be careful to not blend the hot liquid!)
For an extra smooth curry, strain the blended mixture through a sieve to remove all excess cashew pulp (I normally just skip this part).
Add in 1/2 cup heavy or whipping cream, cubed paneer, sugar (if using), and extra water, if needed.
Turn the heat back on and simmer for another 10 minutes until paneer is softened.
Garnish with chopped cilantro and a drizzle of more cream.