Lamb Biryani with Crispy Shallots

Jump to Recipe

Biryani is not a quick weeknight dish, and this one doesn’t pretend to be. It’s a weekend cook – the kind where the marinade goes in the night before and the whole kitchen smells like cardamom and caramelized onions by afternoon.

The lamb here is bone-in shoulder, cut into large pieces. Bone-in keeps the meat moist during the long dum cook and adds richness to the rice layered underneath.

Crispy shallots are not optional. They go on top at the very end, and they bring a crunch and sweetness that even slow-cooked caramelized onions don’t quite match. I fry them separately in batches so they stay crisp rather than steaming.

The dum method – sealing the pot with dough or foil and letting steam do the final cooking – is what makes the rice grains separate and fragrant rather than mushy. It takes patience but no special equipment beyond a heavy pot.

Lamb biryani with saffron rice and golden crispy shallots served in a copper dish with raita on the side

Why You’ll Love This Recipe

  • Bone-in lamb stays moist through the full dum cook
  • Crispy shallots add crunch no plain onion can match
  • Marinade takes 10 minutes and works overnight
  • Every grain of saffron rice absorbs the lamb’s juices

Ingredient Notes

  • Bone-in lamb shoulder: Cut into 5-6 cm pieces by your butcher. Bone-in releases collagen during cooking and keeps the meat from drying out. Boneless leg works but reduces cooking depth.
  • Basmati rice: Aged basmati is worth seeking out – it stays firm after double cooking. Rinse until the water runs clear and soak for 30 minutes before parboiling.
  • Whole spices (cardamom, cloves, star anise, bay leaves): Bloom them briefly in hot oil before adding the lamb. Whole spices give a cleaner, less bitter flavor than ground for a long-cooked biryani.
  • Saffron: Steep a generous pinch in 3 tbsp of warm whole milk for at least 15 minutes before using. Saffron powder dissolved in water is a usable substitute but the milk gives a creamier color.
  • Shallots: Slice thin and uniform so they fry at the same rate. Thai shallots are smaller and sweeter than French shallots – either works, but fry them in batches to avoid crowding.
  • Full-fat plain yogurt: Whisked smooth before adding to the marinade so it coats the lamb evenly. Greek yogurt works but thins it slightly with a spoonful of water first.
Lamb biryani with saffron rice and golden crispy shallots served in a copper dish with raita on the side

Lamb Biryani with Crispy Shallots

A layered lamb and saffron basmati biryani sealed and slow-cooked dum-style, finished with crispy fried shallots for texture and sweetness.
Prep Time 30 minutes
Cook Time 2 hours
Total Time 2 hours 40 minutes
Servings: 6 servings
Calories: 620

Ingredients
  

Lamb marinade
  • 1.2 kg bone-in lamb shoulder pieces cut into 5-6 cm chunks by butcher
  • 200 g full-fat plain yogurt whisked smooth
  • 2 tbsp fresh ginger grated to a paste
  • 6 cloves garlic grated to a paste
  • 1.5 tsp ground cumin
  • 1.5 tsp ground coriander
  • 1 tsp Kashmiri chili powder or mild paprika for less heat
  • 1.5 tsp garam masala
  • 0.5 tsp turmeric
  • 1.5 tsp fine sea salt
  • 2 tbsp neutral oil
Biryani base
  • 3 tbsp neutral oil or ghee
  • 5 green cardamom pods lightly crushed
  • 4 whole cloves
  • 2 star anise
  • 2 dried bay leaves
  • 1 cinnamon stick 7 cm piece
  • 2 medium yellow onions thinly sliced
  • 2 medium plum tomatoes roughly chopped
  • 20 g fresh cilantro roughly chopped, plus extra to serve
  • 15 g fresh mint leaves roughly torn
Rice layer
  • 400 g aged basmati rice rinsed and soaked 30 minutes
  • 3 liters water for parboiling
  • 2 tbsp fine sea salt for parboiling
  • 6 whole black peppercorns
  • 3 green cardamom pods for parboil water
Saffron milk and finishing
  • 0.5 tsp saffron threads steeped in warm milk 15 minutes
  • 3 tbsp whole milk warm
  • 2 tbsp ghee for drizzling over layers
  • 1 tsp rose water optional, for fragrance
Crispy shallots
  • 300 g shallots peeled and thinly sliced into rings
  • 300 ml neutral oil for frying enough to shallow-fry in batches
  • 0.5 tsp fine sea salt for seasoning after frying

Method
 

Marinate the lamb
  1. Combine yogurt, ginger paste, garlic paste, ground cumin, ground coriander, Kashmiri chili powder, garam masala, turmeric, salt, and oil in a large bowl and whisk until smooth.
  2. Add the lamb pieces and turn to coat thoroughly. Cover and refrigerate for at least 8 hours, or overnight.
Fry the crispy shallots
  1. Pour oil into a deep saucepan or wok to a depth of about 4 cm and heat to 160 C over medium heat.
  2. Add a small handful of sliced shallots - they should sizzle immediately. Fry, stirring occasionally, for 8-10 minutes until deep golden and crisp.
  3. Remove with a slotted spoon and spread on a wire rack. Season lightly with salt. Repeat with remaining shallots in batches. Set aside at room temperature.
Cook the lamb base
  1. Heat 3 tbsp oil or ghee in a heavy Dutch oven over medium-high heat. Add cardamom, cloves, star anise, bay leaves, and cinnamon stick and stir for 30 seconds until fragrant.
  2. Add sliced onions and cook, stirring often, for 15-18 minutes until deep golden brown and starting to crisp at the edges.
  3. Add marinated lamb and all its marinade. Stir to coat, then add chopped tomatoes. Cook over medium heat for 10 minutes, stirring occasionally, until the tomatoes break down and the oil begins to separate at the edges.
  4. Add half the cilantro and half the mint. Reduce heat to low, cover, and cook for 35-40 minutes until the lamb is about 80 percent tender and the gravy has thickened. Taste and adjust salt.
Parboil the rice
  1. Bring 3 liters of water to a rolling boil in a large saucepan. Add 2 tbsp salt, peppercorns, and cardamom pods.
  2. Drain the soaked basmati and add to the boiling water. Cook for exactly 5-6 minutes, checking frequently. The grains should be puffed and elongated with a small white firm core at the center - they are 70 percent done.
  3. Drain immediately through a fine-mesh sieve and spread on a plate to stop cooking.
Layer the biryani
  1. Spread the lamb and its gravy evenly across the base of the Dutch oven. Scatter remaining cilantro and mint over the lamb.
  2. Layer the parboiled rice evenly over the lamb. Drizzle the saffron milk across the rice in streaks - you want patches of white and yellow, not uniform color.
  3. Drizzle 2 tbsp melted ghee over the rice. Add rose water if using. Scatter half the crispy shallots over the top, reserving the rest for serving.
Dum cook and rest
  1. Cover the pot tightly with two layers of heavy-duty foil pressed firmly around the rim, then set the lid on top to seal completely.
  2. Place a tawa or heavy cast-iron skillet on the stovetop over the lowest heat setting. Set the covered Dutch oven on top and cook for 30-35 minutes. You'll hear very faint steam sounds from inside - that's correct.
  3. Remove from heat and let the sealed pot rest, undisturbed, for 10 minutes. This allows the steam to finish cooking the rice.
  4. Open the foil carefully away from you - the steam is hot. Use a long spoon to gently fold the bottom lamb layer up through the rice once or twice, then serve immediately with the remaining crispy shallots on top.

Notes

For the clearest saffron color, use a generous pinch of high-quality threads steeped in warm (not hot) milk for at least 15 minutes before drizzling. If the pot feels too dry after the dum cook, the lamb gravy likely reduced too far - add 3 tbsp water to the lamb layer before sealing next time.
Saffron milk being drizzled over parboiled basmati rice layered on top of spiced lamb in a Dutch oven

Tips for Success

  • Marinate the lamb pieces for at least 8 hours so the yogurt tenderizes the meat fully.
  • Parboil the basmati to exactly 70 percent cooked – grains should still have a firm white center.
  • Seal the pot lid with a rope of dough or two layers of foil pressed tight before the dum cook.
  • Place the biryani pot on a tawa or heavy skillet over low heat to prevent the bottom rice from scorching.
  • Fry shallots in small batches at 160 C so they turn golden and crisp without burning bitter.

Variations

  • Swap lamb for bone-in chicken thighs and reduce dum cook time to 25 minutes.
  • Use ghee instead of neutral oil throughout for a richer, more aromatic rice layer.
  • Add a layer of thinly sliced fried potatoes between the lamb and rice for a Kolkata-style biryani.

Storage and Reheating

Refrigerate leftovers in an airtight container for up to 3 days. Keep the crispy shallots separately in a dry container at room temperature – they lose their crunch quickly if stored with the rice.

To reheat, sprinkle 2 tbsp of water over the biryani, cover tightly with foil, and warm in a 160 C oven for 20 minutes until heated through. Stovetop reheating over very low heat works too – add a splash of water and keep the lid on for 10 minutes.

The biryani freezes well without the shallots. Freeze in portions for up to 2 months and defrost overnight in the refrigerator before reheating. Fry fresh shallots when serving from frozen.

Serving Suggestions

Serve straight from the pot at the table with the crispy shallots scattered on top at the last minute. A small bowl of raita made with grated cucumber, plain yogurt, and a pinch of cumin on the side cuts through the richness of the lamb.

Sliced raw onion with a squeeze of lemon and fresh mint is a traditional accompaniment that adds brightness. A simple kachumber salad of diced tomato, cucumber, and red onion works equally well.

For a larger spread, pair with a lightly spiced dal or a green herb chutney — or serve alongside a slow-simmered spiced curry with roti if you’re building a full weekend dinner spread. The biryani eats like a full meal on its own, but the dal adds contrast in texture and a bit of extra protein if you’re feeding a crowd.

Two bowls of lamb biryani with crispy shallots at a linen table with mint lassi and rose water

FAQ

Why is my lamb biryani rice mushy at the bottom?

The most common cause is parboiling the rice too far before layering – it should still have a firm white core at the center of each grain. A tawa or heavy skillet placed under the pot during dum cooking also protects the bottom layer from direct heat.

Can I use lamb leg instead of lamb shoulder for biryani?

Boneless leg works but it’s leaner, so it dries out faster during the long dum cook — if you want to explore other cuts, bold Middle Eastern lamb preparations show how different cuts behave under heat. If you use leg, reduce the dum time by about 10 minutes and check for tenderness earlier.

How do I keep the fried shallots crispy after making them?

Drain them on a wire rack rather than paper towels so steam doesn’t collect underneath. Store them uncovered or in a dry airtight container at room temperature and add them to the biryani only just before serving.

What is the difference between dum biryani and pressure cooker biryani?

Dum biryani uses gentle, sealed steam over low heat which lets the rice finish cooking in the lamb’s aromatic steam without over-softening. Pressure cooker biryani is faster but produces a slightly denser, less layered result because the high pressure compacts the rice.

Is lamb biryani gluten-free?

Yes, this recipe is naturally gluten-free as long as you seal the pot with foil rather than dough. Check that your spice blends and yogurt are certified gluten-free if you’re cooking for someone with celiac disease.

How far ahead can I marinate the lamb for biryani?

Overnight is the sweet spot – 8 to 12 hours gives the yogurt and spices time to penetrate the meat. Beyond 24 hours, the yogurt’s acidity can start to break down the surface texture of the lamb too much.