Heat a large pan on the stove on medium-high heat. We want a very well heated pan to make the spice base for this recipe. While the pan is heating, crush the cardamom, clove and cinnamon stick gently in a mortar and pestle so they are broken in to smaller pieces. We do NOT want them to be ground to a fine powder.
Add the crushed spices along with the bay leaf to the heated pan and roast them for a few seconds.
Add the finely chopped garlic to the pan and saute for 5-10 seconds or until the garlic starts to give out a mild aroma.
Add the finely sliced onions to the pan and saute them until the onions are nicely browned and caramelized. This step is a little time consuming and requires patience because onions take some time to evenly brown when not being fried in oil. The key is to stir constantly to prevent them from sticking to the bottom. Once the onions start to cook they will, however, start to stick to the bottom. At this point add a tablespoon or two of water to deglaze the pan and keep stirring. Once the water has evaporated, add another tablespoon or so of water and stir. Keep adding water and deglazing the pan until the onion is nicely caramelized. Well caramelized onion is a must for this recipe. This could take as much as 15 minutes.
Once the onions are evenly caramelized add the tomatoes, ginger, ground coriander, turmeric and cayenne pepper to the pan. Saute until the pungent aroma of the spices is gone and the tomatoes are no longer raw. This will again take some time, about 10 minutes, and you will need to stir continuously to prevent the mix from sticking to the bottom.
Add the kidney beans to the pan and stir. Add the water and salt. Cover and let it all come to a boil on high heat. Reduce heat to medium low and let it simmer until the beans start to slightly disintegrate. About 10 minutes.
To finish, garnish with chopped cilantro and serve.