Coat the beef pieces lightly with the plain flour, shaking off any excess. This helps develop a rich, thick gravy later on. Set aside while you prepare the pan for browning.
Heat 2 tbsp of oil in a large heavy bottomed pot over medium to high heat. Brown the beef in batches without overcrowding the pan, turning until all sides are golden. Remove the beef and set aside.
Add the remaining oil to the pot. Stir in onions, carrots, and celery, cooking until softened and lightly golden. Add the garlic and mushrooms, cooking for a further 2 minutes.
Return the beef to the pot. Stir in the tomato purée and Worcestershire sauce, coating everything well. Pour in the ale and allow it to bubble for a couple of minutes to cook off the sharpness. Add the beef stock, thyme, and bay leaves. Season lightly with salt and pepper.
Reduce the heat to low, cover the pot, and let the filling simmer gently for 1.5 to 2 hours until the beef is tender and the sauce has thickened. Stir occasionally to prevent sticking. Remove the thyme sprigs and bay leaves before using the filling.
In a mixing bowl, rub the cold butter into the flour with a pinch of salt until the mixture resembles breadcrumbs. Add just enough cold water to bring the dough together. Wrap in cling film and chill for 30 minutes before rolling.
Preheat your oven to 200°C (180°C fan). Transfer the cooled beef filling into a large pie dish. Roll out the pastry to fit over the top, trimming the edges neatly. Press down along the rim and cut a small slit in the centre to let steam escape.
Brush the pastry with the egg and milk glaze for a glossy finish. Bake for 35 to 40 minutes until the pastry is golden brown and crisp.
Allow the pie to rest for 5 to 10 minutes after baking. This helps the filling settle and makes slicing easier.
Serve hot with creamy mashed potatoes and buttered peas, or keep it traditional with chips and a pint of ale. Garnish with fresh parsley for colour.