Rinse the basmati rice under cold water until the water runs clear. Drain and set aside.
Heat the vegetable oil in a large pot over medium heat.
Add the finely chopped onion and sauté until golden brown.
Stir in the minced garlic and fresh ginger, cooking for another minute.
Add the beef or chicken pieces to the pot and cook until browned on all sides.
Stir in the chopped tomatoes and cook until they soften.
Add the ground cumin, ground coriander, ground cinnamon, ground cardamom, ground black pepper, ground turmeric, and bay leaf. Mix well to coat the meat with the spices.
Pour in the coconut milk and water or broth, then bring to a boil.
Add the rinsed basmati rice to the pot, stirring gently to combine.
Season with salt to taste.
Reduce the heat to low, cover the pot, and simmer for about 20-25 minutes, or until the rice is cooked and the liquid is absorbed.
Remove from heat and let it sit, covered, for an additional 10 minutes.
Fluff the rice with a fork and garnish with fresh cilantro if desired.
Enjoy your meal!