Preheat the oven to 180C/350F/Gas 4.
For the lamb, rub the oil into the shoulder of lamb and season with salt and freshly ground black pepper. Place the shoulder of lamb into a baking tray, surround it with the shallots and roast in the oven for 30-40 minutes.
Remove the lamb from the oven, drain off any fat and add the garlic cloves and thyme sprigs to the pan. Reduce the heat to 120C/250F/Gas 1, cover the lamb with aluminium foil, and continue to cook for 4½ hours.
Pour the red wine over the lamb and cook for a further hour.
For the champ mash, bring a pan of salted water to the boil, add the potatoes and cook for 10-15 minutes, or until tender, then drain well and mash.
While the potatoes are cooking, heat the milk in a saucepan over a low to medium heat, add the butter and the green part of the spring onion and continue to simmer for 3-4 minutes. Sieve the mixture, reserve the liquid and discard the green part of the spring onion.
Beat the reserved milk mixture into the mashed potatoes, then stir in the egg yolk and the sliced white parts of the spring onions. Set aside on a warm, covered plate.
Remove the lamb shoulder from the oven and carefully transfer the lamb, garlic and shallots to a serving dish. Do not allow the meat to fall off the bone.
For the sauce, spoon off any excess fat, then pour the cooking juices from the baking tray into a frying pan and heat them over a medium heat until the volume of liquid has reduced by one third. Add the cold butter and whisk until the sauce is glossy. Stir in the chopped thyme.
To serve, spoon a portion of the champ mash onto each serving plate. Pull some of the lamb from the bone and place it next to the champ mash, then pour over the red wine sauce.