Rinse and pat dry chicken with paper towel.
To make the marinade, combine together yogurt, tomatoes, garlic, ginger, garam masala, cumin, coriander, red chili powder and lemon juice in a large bowl. Season with salt and pepper.
Rub half of the marinade over chicken. If time permits, marinate overnight in the refrigerator.
Place egg in the cavity of chicken.
Tie legs with kitchen string to secure them in place. Tuck arms underneath the breast.
When ready to cook, preheat oven to 180 C or 350 F.
Meanwhile, heat oil in an oven-safe heavy bottomed pan with lid or Dutch oven over medium-high heat.
When hot, place chicken in oil. Cook for about 4 minutes or until well browned.
Flip over and cook the other side for about 4 minutes or until browned. Transfer chicken to a plate.
Add bay leaf, cinnamon stick, cloves and cardamom pods. Saute, stirring, for about 1 minute or until fragrant.
Add turmeric, cumin, fennel, coriander, garam masala and red chili powder. Saute, stirring, for a few seconds or until aromatic.
Add reserved marinade, chicken broth (stock), saffron and kewra water. Stir to combine. Season with salt. Simmer for about 2 minutes.
Place the chicken, breast side up, in the pan. Add chopped coriander (cilantro) leaves.
Cover the pan with lid. Transfer to the oven. Cook for about 1 hour.
Remove lid. Increase the oven temperature to 200 C or 400 F.
Cook for another 30 minutes, or until the chicken gets a light brown color, and the inside of the chicken registers 74 C or 165 F on a meat thermometer.
Remove from oven. Set aside for about 10 minutes before serving.
Garnish with chopped coriander (cilantro) leaves. Serve with the side of your choice.