Marinate the chicken: In a bowl, combine yogurt, lemon juice, garam masala, cumin, paprika, turmeric, ginger, garlic, salt, and pepper. Toss in the chicken and coat well. Cover and chill for at least 30 minutes (or up to 6 hours).
Heat the pan: Warm oil or ghee in a large skillet over medium heat. Sear the marinated chicken pieces until they’re nicely browned on the edges. They don’t need to be cooked through—fake it until you make it.
Sauté aromatics: In the same pan, add the chopped onion. Cook until translucent and starting to caramelize, about 5 minutes. Stir in a pinch more salt to bring out the flavor.
Make the sauce: Pour in crushed tomatoes and simmer for 8–10 minutes, letting the flavors mingle. If you’re feeling fancy, scrape up all those tasty brown bits from the pan.
Finish the dish: Return the chicken to the pan (or add it to the sauce if you prefer). Stir in the cream and simmer gently for 5–7 minutes until the chicken is cooked through and the sauce is glossy. Taste and adjust salt or heat as needed.
Serve: Spoon over rice or with naan. Garnish with cilantro if you’re feeling extra. Enjoy immediately, because leftovers will still be excellent tomorrow.