In a large heavy-duty Dutch oven or saucepan, melt and warm the ghee or oil and add cumin, fennel seeds, bay leaf and cinnamon stick. Once they start to sizzle add the sliced onions. On medium-high heat, saute the onions for 5 to 7 minutes stirring frequently until they start to soften and have golden brown edges.
Add the minced garlic, ginger and chopped green chillies and sauté for a minutes.
Next add the chicken pieces. Cook on medium to low for 3 to 4 minutes stirring frequently until the the chicken starts to sear. Turn the heat to low and cover the saucepan, cooking the chicken for another 10 minutes.
Add the tomatoes, ground spices(coriander, turmeric, salt, black pepper, Kashmiri cillli powder) and continue cooking the chicken for another 5-6 minutes, making sure the onions don't stick to the bottom or burn. If they are sticking, add 2 to 3 tablespoons of water.
Turn the heat to high and add 1 cup of water, stir, bringing the whole mixture to a boil. Lower the heat, cover the saucepan and simmer the curry for another 12 to 15 minutes. Check after 5 minutes if it needs more water to make more sauce .
Add the ground cardamom, nutmeg and cloves if using and mix well. The chicken should be cooked and tender. Turn the heat off. Keep the lid ON and let the curry rest for 10 to 15 minutes before serving.
Garnish with cilantro and serve.