Marinate the thickly diced chicken with garam masala, 1 tsp of dried fenugreek leaves, chili powder, 1 tsp of salt (per taste) and yogurt. Mix it all together, cover the bowl and leave it in the fridge for a minimum 4 hours or overnight to get the best flavor.
Note: If you are using paneer, tofu or cauliflower, cut them in bite size chunks and use the same marinating mix. For the veggie options, you just need a couple hours of marinating time.
To prepare the sauce, place a heavy bottom pan on medium heat and pour in the ghee followed by ginger garlic paste, cinnamon sticks and whole green cardamom. Stir the mix around for few seconds then add the sliced onions, rest of the salt and sugar and cook for 3 minutes or until the onions soften.
Pour in the tomato sauce, rest of the dried fenugreek leaves, cinnamon powder and 1.5 cup of water. Stir around and bring it to a boil. Then lower the heat to medium low and cover the pan, let it simmer for 20 minutes.
In the mean time, either cook the chicken cubes in a hot cast iron skillet or grill it using a skewer. Whatever method you choose, keep in mind to brush a little oil on the skillet or grill pan and bring it to medium high heat. Place the diced marinated chicken and let it char for 1.5 to 2 minutes on each side. Keep it aside once done.
Note: Follow the same technique when using any of the veggie options.
Once the sauce has simmered for 20 minutes, drop the charred chicken or veggie pieces into the sauce, followed by half of the coconut milk portion. Stir it around and cook for 1 minute.
While serving, drizzle the remaining coconut milk on the curry and garnish with fresh cilantro leaves.