Rinse the basmati rice several times and soak it in salted water for 30 minutes.
Rinse the lentils and simmer them in water for 15-20 minutes until tender but still firm. Drain well.
Thinly slice the onions and fry them in 2 tablespoons of oil until golden brown.
Add turmeric, cinnamon, and black pepper. Stir in the raisins and optional chopped dates, then cook for 1–2 minutes.
Bring a large pot of salted water to a boil. Add the drained rice and parboil for 5-8 minutes until the outside is soft and the center remains slightly firm. Drain.
Add the remaining oil to a pot. Layer the rice and lentils, then drizzle with brewed saffron and add optional butter.
Cover and steam over medium heat for 5 minutes, then reduce the heat to low and cook for 30-40 minutes until the rice is fluffy.
For the optional meat topping, cook the ground beef in a skillet with a little oil, salt, pepper, and turmeric until thoroughly cooked.
Transfer the rice to a serving platter and garnish with the onion and raisin mixture and optional cooked beef. Serve hot with yogurt, fresh herbs, or Shirazi salad.