Heat the oil in a large pan or a pot over medium heat. Once the oil is hot, add the chopped onions, minced garlic cloves, and ginger, and cook for 3-4 minutes until the onions are lightly golden.
Add all the spices: garam masala, curry powder, turmeric, cayenne pepper, and ground cumin (note 2). Cook until fragrant for around 30 seconds to a minute.
Add the chickpeas and toast for a couple of minutes. Then add the salt, crushed tomatoes, and coconut milk.
Bring the curry to a boil, reduce the heat to medium-low to keep it gently simmering, and cook for around 10 minutes until it thickens.
Turn off the heat and blend roughly half of the curry with an immersion blender. Or transfer the mixture to a standard blender, blend until smooth, and return it to the pan. Blending the curry takes more effort and it's optional, but it will help create a rich and creamy curry sauce.
If the sauce is too thick, add another half a cup of water, taste for seasoning, and add more salt if necessary. If you like your curry spicy, now it’s time to add extra chili.
Add the baby spinach and chopped cilantro. As soon as the spinach wilt, the curry is ready.
Serve with brown or white basmati rice or naan bread, and garnish with extra cilantro, slices of red onions, and fresh chili.