For the lamb shanks, place a really large casserole on a high heat. Season the lamb shanks all over. Add the oil and, working in batches, sear the lamb shanks all over until golden-brown, transferring them to a large plate as you go.
Next, reduce the heat to medium and add the onions, celery and carrots to the pan. Cook for 6-8 minutes until soft but not coloured, adding the garlic for the last minute. Mix in the flour.
Increase the heat and then add the wine, allowing it to bubble down for a minute or two. Now add the tomato purée, then the rosemary and bay leaf. Season well with salt and pepper.
Return the lamb shanks to the pan, pour over the stock and cover with a tight fitting lid. Bring to the boil and then reduce to a very gentle simmer for about 3 hours. Turn the shanks occasionally during this time. Once cooked, the meat from the lamb shanks should be really tender and just falling off the bone.
Meanwhile, prepare the gremolata. Simply toss the mint, lemon zest, parsley and garlic together in a small bowl. Cover and chill until serving.
Half an hour before serving, prepare the mash. Cook the potatoes in a large pan of boiling salted water for 15-20 minutes or until tender. While the potatoes cook, steam the cabbage until just tender. Warm the milk and butter in a small pan until just boiling then remove from the heat.
Drain the potatoes well. Add the milk and butter mixture and mash until smooth. Stir the cabbage through to wilt completely and season to taste. Cover and keep warm.
To serve, spoon a large dollop of creamy mash into the centre of each serving bowl or plate. Sit a lamb shank on top, spoon the sauce over and scatter generously with the gremolata.