Grate 1 large red onion on the large holes of a box grater; set aside.
Cut ends off 2 plum tomatoes and grate flesh down to skins; discard skins. Set aside separately.
Bring two 15-oz. cans chickpeas with their liquid to a boil in a medium saucepan; cook, stirring occasionally, until chickpeas swell slightly and are a bit lighter in color, 10–15 minutes. Remove from heat.
Meanwhile, heat 3 Tbsp. vegetable oil in a large skillet over medium.
Cook 1 tsp. cumin seeds, swirling pan, until seeds start to pop and sputter, 10–20 seconds.
Add 6 garlic cloves, finely grated, one 1" piece ginger, peeled, finely grated, and reserved grated red onion. Cook, stirring often, until most of the water has evaporated, 7–9 minutes.
Add reserved grated tomatoes to skillet and cook, stirring, 1 minute.
Add 2 tsp. garam masala, 2 tsp. Diamond Crystal or 1¼ tsp. Morton kosher salt, 1 tsp. ground coriander, ½ tsp. amchur (dry mango powder), ½ tsp. ground turmeric, ½ tsp. Kashmiri or other red chile powder, and ⅛ tsp. ground cinnamon. Cook, stirring, until fragrant and color deepens slightly, about 2 minutes.
Add chickpeas with their liquid to pan, reduce heat, and simmer, stirring often, until mixture thickens and takes on a slightly shiny appearance as the oils start to separate, 10–15 minutes.
Stir juice of ½ lime, ¼ cup chopped cilantro, and 2 Tbsp. unsalted butter (if using) into chana masala.
Divide chana masala among bowls and top with cilantro leaves with tender stems and sliced red onion (if using). Serve with steamed rice, naan, or crusty bread.
