Wash and soak 300 grams of basmati rice for 30 minutes, then drain the water and set aside.
Marinate 500 grams of fish pieces (preferably boneless) with 1/2 teaspoon turmeric powder, 1 teaspoon red chili powder, 1/2 teaspoon garam masala, 1 tablespoon ginger-garlic paste, 1/2 cup yogurt, salt to taste, and juice of 1 lemon. Set aside for 30 minutes.
Heat 3 tablespoons of oil in a deep pan and fry 2 thinly sliced onions until golden brown. Remove half of the fried onions and set aside for garnishing.
Add 1 chopped tomato, 1/2 teaspoon turmeric powder, 1 teaspoon red chili powder, 1/2 teaspoon garam masala, and 1/2 cup chopped coriander leaves to the remaining onions in the pan. Cook until the tomatoes are soft.
Add the marinated fish pieces to the pan and cook for 5-7 minutes on medium heat. Remove the fish pieces and set aside.
In the same pan, add the soaked rice and 600 ml of water. Add salt to taste and cook the rice until it's 70% cooked.
Layer the partially cooked rice over the cooked fish pieces in the pan. Sprinkle the reserved fried onions, chopped coriander leaves, and 1/4 teaspoon saffron soaked in 2 tablespoons of warm milk over the rice.
Cover the pan with a tight-fitting lid and cook on low heat for 20-25 minutes, until the rice is fully cooked and the flavors have melded together.