Heat the oil in a 3-quart / 2.8 L saucepan or Dutch oven over medium heat. Add the diced onion and cook for 8 to 10 minutes, stirring occasionally, until deeply golden.
Add the garlic and ginger and cook for 1 minute, stirring, until fragrant.
Stir in the tomato paste, garam masala, cumin, coriander, smoked paprika, turmeric, and cayenne. Cook for 1 minute, stirring constantly, until the spices smell toasted and coat the onions.
Pour in the crushed tomatoes. Simmer for 8 to 10 minutes, stirring occasionally, until the sauce thickens slightly and turns brick red.
Add the drained chickpeas and coconut milk. Stir to combine and bring back to a gentle simmer.
Simmer uncovered for 15 to 18 minutes, stirring every few minutes, until the sauce coats the back of a spoon and the chickpeas soften at the edges. Past 20 minutes the chickpeas start to break down, so pull the pot once the sauce clings to a spoon.
Season with the salt, tasting as you go. If the sauce looks too thick, loosen it with a splash of water; if it's thin, simmer 5 more minutes.
Remove from the heat and stir in the chopped cilantro. Serve over basmati rice or with naan, with lime wedges alongside.