In a large pot, heat olive oil over medium heat. Add onion and cook for about 5 minutes, until softened.
Stir in garlic, cumin, coriander, cinnamon, ginger, cayenne, and turmeric. Cook for 1–2 minutes, stirring until fragrant.
Add sweet potatoes and stir to coat in spices. Cook for 2–3 minutes.
Pour in broth and tomatoes with their juices. Bring to a simmer, reduce heat to low, and cover. Simmer for 15–20 minutes, or until potatoes are tender.
Use an immersion blender to blend the soup until smooth, or blend in batches and return to the pot.
Stir in chickpeas and season with salt and pepper to taste. Heat through.
Serve hot, topped with cilantro. Add a spoonful of yogurt if desired.