Heat the olive oil in a large pot or Dutch oven over medium heat. Add the diced onion and cook until softened, about 5 minutes.
Add the garlic and ginger, and cook for another 1-2 minutes until fragrant.
Stir in the curry powder, ground cumin, turmeric, and cayenne pepper. Cook for 30 seconds, stirring constantly, until fragrant.
Add the chickpeas, diced tomatoes (with their juices), and vegetable broth. Stir to combine.
Bring the mixture to a simmer, then reduce heat to low and cook for 15-20 minutes, stirring occasionally, until slightly thickened.
Stir in the coconut milk and simmer for another 5 minutes.
Add the fresh spinach and cook until wilted, about 2-3 minutes. Season with salt and pepper to taste.
Garnish with fresh cilantro and serve hot over basmati rice.