Heat the olive oil in a pan and fry the meat to brown it all over. Remove from the pan and set aside.
Add the onion and celery and cook for 10 minutes, or until softened.
Add the garlic, herbs and mushrooms. Cook for another five minutes. Add the meat back to the pan, along with the flour and cook for a few minutes.
Pour in the Madeira and cook until reduced to half the volume. Add the red wine and then the port. Cook until reduced to below half. Add the stock and simmer for 1-2 hours, until the meat is tender. Stir in the Parma ham.
Tip the mixture into a 22-24cm/8½-9½in pie dish and roll out the shortcrust pastry.
Cut out a lid of pastry for the pie dish and a strip of pastry large enough to cover the edge of the pie dish all the way round. Brush the edge of the dish with water, press the strip on top and then cover the pie with the lid. Crimp, using one finger to push the pastry down towards the outside of the dish. Pinch around that finger with the finger and thumb of your other hand. Brush with egg and chill for ten minutes in the fridge. Preheat the oven to 180C/160C Fan/Gas 4.
Cook the pie for 25-30 minutes until golden.
To serve, heat a large sauté pan and add the butter. Tip in the cabbage and cook for 2-3 minutes and then sprinkle over the parsley.
Cut a slice of the pie and serve it with the cabbage.