Heat oil in a large pot and add cumin seeds, cardamoms, cloves, cinnamon, and bay leaf. Sauté for a minute.
Add sliced onions and fry until golden brown.
Stir in ginger-garlic paste and green chillies, cooking for 2 minutes.
Add chopped tomatoes, turmeric powder, red chilli powder, and salt. Cook until tomatoes soften.
Add cubed tofu and mix gently, allowing it to absorb the spices.
Rinse basmati rice under cold water until the water runs clear, then add to the pot.
Pour in 4 cups of water and bring to a boil.
Once boiling, reduce heat to low, cover, and cook for 15-20 minutes or until rice is tender.
Fluff the biryani gently with a fork and sprinkle garam masala on top.
Garnish with fresh coriander leaves before serving.