1. Place all the marinade ingredients in a bowl and combine with the lamb pieces. Marinate in the fridge for 8 hours.
2. Remove the lamb from the marinade,pass the liquid through a fine sieve and reserve. Discard the other ingredients.
3. Heat 2 tablespoons of the oil in a heavy-based saucepan over high heat. Seal the lamb in batches until browned (2-3 minutes each batch). Remove the meat from the pan and set aside.
4. Add the remaining oil and reduce the heat to low. Cook the onion and garlic until softened (10-15 minutes). Add the tomato paste and cook for a few minutes,then add the flour and cook,stirring constantly,for 3 minutes. Slowly whisk in 250 millilitres of the reserved marinade liquid,stirring constantly for a few minutes until there are no lumps. Stir through the stock and passata and season well with salt and pepper. Return the lamb and any juices to the pan,along with the carrot and celery. There should be enough liquid to cover.
5. Bring to a simmer over high heat,cover and reduce heat until gently simmering,cook for 30 minutes,uncover and cook for a further 30-60 minutes,or until the meat is tender. Set aside to cool for 10 minutes. Pour the sauce into a large frying pan and reduce to desired consistency (10-15 minutes). Return the lamb to the sauce,adjust seasoning.
6. For the mushrooms,preheat oven to 200°C. Place mushrooms,stems up,on a baking tray. Brush with the butter and drizzle with the oil. Scatter with thyme leaves and season. Roast in the oven for about 15 minutes or until tender.
7. Serve lamb with parmesan,mushrooms and green salad.