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.