Heat half the oil in a large, heavy-based saucepan over medium-high heat. Cook beef, in batches, until browned all over. Transfer to a bowl.
Heat remaining oil in pan. Add onions and garlic. Cook, stirring, for about 2 minutes or until onions are golden. Return beef and juices to pan. Add flour. Cook, stirring, for 1 minute. Add tomato paste and gravy powder. Stir to combine. Add stock. Cover. Bring to the boil. Reduce heat to low. Simmer for 20 minutes.
Add carrot, celery and pepper. Season with salt and pepper. Stir to combine. Simmer, covered for 30 minutes. Remove lid. Simmer for 30 minutes or until beef is just tender and sauce has slightly thickened. Stir in peas.
Meanwhile, make potato topping. Cook potatoes in a large saucepan of boiling water for 12 minutes or until tender. Drain well. Return to pan. Mash potato. Add milk and butter. Season and mash until smooth.
Preheat oven to 200°C/180°C fan-forced. Spoon beef mixture into an 8 cup-capacity ovenproof dish. Spoon over potato topping. Bake for 20 minutes or until top is golden brown. Stand 5 minutes. Serve.