In a bowl, combine yogurt, lemon juice, ginger paste, garlic paste, garam masala, turmeric, chili powder, and salt. Add shrimp and marinate for at least 30 minutes.
Heat oil or ghee in a large skillet over medium heat. Sauté onions until soft and translucent, about 5 minutes.
Add garlic and ginger, cook for 1 minute until fragrant.
Stir in cumin, coriander, paprika, turmeric, and garam masala. Cook for 1–2 minutes to release aromas.
Add crushed tomatoes and simmer for 5–7 minutes until slightly thickened.
Stir in heavy cream or coconut cream, simmer for 2–3 minutes.
Add marinated shrimp and cook for 4–5 minutes until shrimp are pink and cooked through.
Season with salt and pepper, garnish with fresh cilantro, and serve hot.