01 - Rinse basmati rice under cold water until water runs clear. Soak for 20 minutes, then drain thoroughly.
02 - Bring 3 cups water and 1 teaspoon salt to a boil in a saucepan. Add drained rice and simmer uncovered until 70% cooked, approximately 7-8 minutes. Drain and set aside.
03 - Place eggs in a pot of cold water. Bring to a boil, then reduce heat and simmer for 8 minutes for medium-hard yolks. Cool under running water, peel carefully, and set aside.
04 - Heat oil or ghee in a large heavy-bottomed pan over medium heat. Add cumin seeds, cardamom pods, cloves, cinnamon stick, and bay leaf. Sauté for 1 minute until fragrant.
05 - Add sliced onions to the spiced oil. Cook over medium heat, stirring occasionally, until golden brown and caramelized, about 8-10 minutes.
06 - Stir in grated ginger, minced garlic, and sliced green chilies. Sauté for 2 minutes until aromatic and raw smell dissipates.
07 - Add chopped tomatoes, turmeric, ground coriander, garam masala, red chili powder, and salt. Cook until tomatoes break down completely and oil begins to separate from the mixture, about 5-7 minutes.
08 - Reduce heat to low. Stir in plain yogurt and cook for 2 minutes, allowing the mixture to thicken slightly.
09 - Spread the partially cooked rice evenly over the tomato-ginger masala. Use a spatula to gently mix once or twice to create a marbled effect. Do not overmix.
10 - Nestle the peeled eggs into the rice. Cover pan tightly with a lid. Cook on very low heat for 15 minutes in dum style, allowing flavors to meld and rice to finish steaming.
11 - Remove from heat and let stand covered for 5 minutes. Uncover, fluff rice gently with a fork, and garnish with chopped cilantro, mint leaves, fried onions, and lemon wedges.