In a mixing bowl, stir together chickpeas and cooking oil. Add 2 teaspoons garam masala, ground turmeric, and salt and stir gently. Set aside.
Heat a Dutch oven or large saucepan over medium heat. Add butter / ghee. When oil begins to shimmer, add onion and saute until tender, 4 to 5 minutes. Add garlic, ginger, 2 teaspoons garam masala, ground cumin, ground coriander, and red pepper flakes and cook for 1 minute more.
Pour tomato puree over onions. Cook, stirring frequently, until tomato puree cooks down and turns rich, dark red, 10 to 12 minutes. (Don’t rush this step - cooking the tomato down until it starts to caramelize on the bottom of the pan will add rich flavor to the dish.)
Stir in water or stock, chickpeas, and sweet potatoes. Cover with a lid. Simmer, covered, until sweet potatoes are very tender, about 15 minutes, depending on the size of the potato cubes.
Remove lid and stir in heavy cream. Simmer everything together, uncovered, until the sauce is thickened to your liking.
Serve masala with rice and / or naan. Top with yogurt and cilantro.