Mix the oil, baharat, orange juice and zest together to make a marinade and season well. Make nine small indents across the surface of the lamb and push a sliver of garlic into each. Put the lamb in a roasting tray and cover with the marinade, rubbing it into the surface so the whole shoulder is covered. Cover with clingfilm and leave to marinate in the fridge for a minimum of 4 hours, ideally overnight.
Preheat the oven to 150°C/gas mark 2. When you’re ready to roast the lamb, remove it from the fridge and let it come to room temperature. Add around 150ml water to the tin and then cover the whole tray in foil so it’s sealed. Roast in the oven for 4 hours. Keep checking to ensure the water hasn’t evaporated entirely, and top up if necessary. Remove the foil for the last half hour of cooking.
When the lamb is cooked, remove from the oven, cover and allow to rest for 30 minutes.
Meanwhile, make the dip. Mix all the ingredients together and season well. Pull the flesh of the lamb away from the bone with a fork and serve with the yogurt dip on the side.