- Marinate cubed paneer with ingredients in the marinate list and refrigerate for 1 hour or overnight (this step is totally optional). 
- Soak cashews and almonds in warm water for 15 minutes. Remove the skin from almonds and set aside. (Refer Note : 3) 
- Heat a heavy bottom pan and add butter and oil (optional). (Refer Note: 2)  Shallow fry the marinated paneer for a minute on both sides and keep aside. 
- Into the same pan add chopped onions, tomatoes, garlic cloves and socked nuts. Cover and cook for 5 minutes, stirring once.  
- Stir in rest of the spices and lime juice. (Refer Note: 4) You can add ¼ cup water if needed. Then cover and cook for another 10 minutes or until the tomatoes are mushy. 
- Once it is done, blend the onion-tomato mixture in a mixer grinder or a blender to a fine paste. 
- Sieve the onion-tomato paste through a mesh sieve to the same pan we used to cook. Sieving gives the sauce a silky smooth texture. But this step is optional. 
- If the sauce seems too runny, simmer it to the consistency you are looking for. Then add the fried paneer and cook for 2 to 3 minutes. (Refer Note: 5) 
- When it starts to boil add heavy cream, salt (if needed) and butter. Stir and turn off the heat. 
- Garnish with cream, butter, and cilantro leaves.