Cut the butter and lard into small chunks and mix with the flour. Freeze for 20 minutes.
Pulse the mixture in a food processor until it resembles small crumbs. Transfer to a bowl and mix in the ice-cold water gradually until it just starts coming together.
On a floured surface, lightly knead the dough until it comes together, ensuring the fat pieces remain visible.
Roll out the pastry into a rough rectangle, fold it into thirds like a business letter, then turn and repeat. Rest in the fridge for 30 minutes. Repeat the rolling/folding/turning/resting process at least once more.
For the filling, cook the beef and onions with salt, pepper, and stock cube in water until the meat is almost tender. Add potatoes and simmer until cooked. Transfer to a baking dish and let cool.
Preheat the oven to 190°C/fan oven 170°C/mark 5.
Roll out the pastry slightly larger than the dish, brush edges with milk, and place it over the dish, pressing edges down.
Brush with milk, crimp edges with a fork, create a lattice pattern on top, make vent holes, and bake for 45-50 minutes until golden brown.
Serve with pickled red cabbage and optionally, ketchup.