Prep the base: Soak cashews in warm water for 10 minutes.
Chop tomatoes and slice the onion. Peel the ginger and garlic.
Sauté aromatics: Heat 1 tablespoon butter and 1 tablespoon oil in a pan over medium heat. Add whole spices.
When fragrant, add onion and sauté until soft and light golden.
Add tomatoes and cashews: Add garlic, ginger, and the chopped tomatoes. Cook until the tomatoes break down and the raw smell disappears. Add cashews and a pinch of salt.
Stir well.
Season: Add turmeric, coriander powder, and half the chili powder. Cook for 2–3 minutes until the mixture thickens slightly and the oil starts to separate.
Blend: Remove the bay leaf and cinnamon. Cool slightly, then blend the mixture until very smooth, adding a splash of water if needed.
Strain for an extra-silky sauce (optional but recommended).
Simmer the gravy: In the same pan, melt 1–2 tablespoons butter. Pour in the blended sauce. Add 1/2 to 3/4 cup water to reach a medium-thick consistency.
Simmer on low for 6–8 minutes, stirring occasionally.
Finish the flavor: Add kasuri methi (crushed between your palms), remaining chili powder, garam masala, and honey or sugar. Taste and adjust salt and sweetness.
Add paneer: Gently stir in paneer cubes. Simmer for 3–4 minutes on low heat so the paneer absorbs flavor without becoming rubbery.
Creamy finish: Stir in the cream and a final knob of butter.
If the sauce feels too thick, add a splash of water or milk. The gravy should be smooth and coating, not pasty.
Serve: Turn off heat. Rest for 2 minutes.
Garnish with a drizzle of cream and a pinch of kasuri methi. Serve hot with naan, roti, jeera rice, or plain basmati rice.