In a large bowl, mix together yogurt, ginger-garlic paste, red chili powder, turmeric, garam masala, cumin, and salt. Add the chicken pieces and coat them well with the marinade. Refrigerate for at least 2 hours, preferably overnight.
Rinse the basmati rice until the water runs clear. Soak the rice in water for 30 minutes, then drain.
Bring 4 cups of water to a boil, add the soaked rice and cook until it’s 70% done (about 4-5 minutes). Drain and set aside.
In a large heavy-bottomed pot, heat the oil. Add the bay leaves, cardamom, cinnamon, and cumin seeds. Sauté for a minute until fragrant. Add the sliced onions and cook until golden brown.
Add the chopped tomatoes and cook until they soften. Add the marinated chicken along with all the marinade. Cook on medium heat until the chicken is half-cooked, about 10-15 minutes.
While the chicken is cooking, warm the milk and infuse it with saffron for a rich color and aroma. Simply heat the milk gently and add the saffron strands, letting it steep for a few minutes until the milk takes on a lovely golden color.
Once the chicken is half-cooked, spread half of the partially cooked rice over the chicken. Sprinkle half of the chopped cilantro and mint over this layer of rice. Then, add the remaining rice, forming a second layer. Sprinkle the remaining cilantro and mint, followed by the saffron-infused milk, evenly over the top layer of rice.
Cover the pot with a tight-fitting lid. Cook on a low heat for about 20-25 minutes, or until the chicken is fully cooked and the rice is fluffy. Fluff up the biryani gently with a fork. Garnish with fried onions and serve hot with lemon wedges on the side.