Make the spice blend by whisking together garam masala, chili powder, paprika, salt, turmeric, ground cumin, ground coriander, cayenne pepper and cardamom; set aside.
Reserve 2 1/2 tablespoons of the spice blend and place it in a large bowl or freezer bag for the marinade.
Add the yogurt, lemon juice, 1 tablespoon grated ginger and 1 tablespoon minced garlic to the reserved spice portion; whisk to combine.
Toss the chicken pieces into the marinade to coat evenly; marinate 30–45 minutes at room temperature or preferably overnight in the refrigerator.
Heat 1 1/2 tablespoons oil in a large braiser or Dutch oven over medium-high heat, add the chopped onion and sauté until softened, about 5–7 minutes.
Add the remaining 1 tablespoon grated ginger, 1 tablespoon minced garlic and the remaining spice blend to the onions; sauté 1 minute until fragrant.
Stir in the fire-roasted crushed tomatoes, bring to a boil, then reduce to a gentle simmer and cook 10 minutes, stirring often and scraping up browned bits.
Optional: Transfer the tomato mixture to a blender (leave a vent for steam) or use an immersion blender and purée until smooth; return to the pan. Taste and add 1–2 teaspoons sugar if needed to balance acidity.
Heat 2 tablespoons oil in a large cast iron skillet over high heat until smoking. In batches, add marinated chicken in a single layer and sear about 2 minutes per side until charred but not cooked through; transfer to a bowl between batches and add oil as needed.
Stir the heavy cream into the blended tomato sauce, then add the seared chicken. Cover and gently simmer a few minutes until the chicken is cooked through and sauce is heated; adjust seasoning with salt, sugar or cayenne to taste.
Serve the Chicken Tikka Masala over basmati rice and garnish with optional cilantro.