Rinse the basmati rice under cold water until the water runs clear. Soak it in water for 30 minutes, then drain.
Heat the oil or ghee in a large pot over medium heat. Add the chopped onion and garlic and cook until softened and golden brown.
Add the chicken or lamb pieces to the pot and cook until browned on all sides.
Stir in the chopped tomatoes, tomato paste, and all the ground spices (cumin, coriander, cinnamon, turmeric, black pepper, cardamom). Cook for a few minutes until the spices are well combined and fragrant.
Add the carrots, raisins, and nuts. Stir to combine.
Pour in the chicken broth and bring to a boil. Reduce the heat to low and simmer for 30-40 minutes, or until the meat is tender.
If using saffron, dissolve it in a small amount of warm water and add it to the pot.
Add the drained rice to the pot, mixing gently. Cover the pot with a tight-fitting lid and cook on low heat for 20-25 minutes, or until the rice is fully cooked and tender.
Remove from heat and let it sit covered for 10 minutes before serving. Fluff the rice with a fork.
Garnish with fresh cilantro before serving.
Enjoy your meal!