Heat oil in a large, heavy-bottomed pan over high heat. Add sliced onions, and saute the onions till they are golden brown and crispy. This process can take about 15 - 20 minutes. Remove the onions with a slotted spoon and put them in a steel colander or kitchen towel. This will absorb the oil, and make them crispy. Once the onions are cool, crush them lightly and set aside. Alternatively you can use store-bought fried onions (see note 1).
In the same oil that was used to fry off the onions, add the whole spices (green cardamom, black peppercorn, cloves, cinnamon, black cumin seeds).
Fry for 1 - 2 minutes to release the flavour of the spices and then add the chicken pieces. Fry for 2 - 3 minutes on medium - high heat and then add the ginger paste and the garlic paste.
Add red chili powder and salt.
Cook for another 2 - 3 minutes till chicken colour changes from pink to white, and the water evaporates.
Turn off the heat, and add the whisked yoghurt to the chicken. Turning off the heat will help the yoghurt to not split.
Mix through the yoghurt and turn heat to low-medium. Add 1 - 2 cups of water, and cook for 30 minutes - 45 minutes till the chicken is cooked through. The timing will differ based on the size of the chicken pieces you are using.
Once the chicken is almost done, add the crushed onions and let it simmer for around 5 - 10 minutes.
Add kewra essence (if using). The chicken korma is ready when the oil separates and rises on the top.
Garnish with sliced almonds and sliced ginger. Serve hot with naan, sheermal or taftan.