1Heat vegetable oil in a large skillet over medium-high heat. Working in batches, sear chicken until golden on all sides (about 3 minutes per batch). Transfer to a plate.
2In the same skillet, melt 1 tbsp butter. Add sliced onion and cook, stirring, until softened and lightly golden, about 5 minutes.
3Stir in garlic and fresh ginger, cook for 1 minute until fragrant.
4Add garam masala, cumin, paprika, coriander, and cayenne. Stir constantly for 30 seconds to bloom the spices.
5Pour in canned crushed tomatoes, scraping up any browned bits from the pan. Simmer for 5 minutes.
6Return chicken to the skillet along with any accumulated juices. Simmer for 10 minutes until chicken is cooked through.
7Remove from heat and stir in heavy cream and remaining 2 tbsp butter until the sauce is silky. Taste and season with salt and black pepper.
8Garnish with fresh cilantro. Serve over basmati rice or with naan bread.