01 - Preheat oven to 400°F.
02 - Heat olive oil in a large skillet over medium heat. Add onion, carrots, and celery; cook for 6–8 minutes until softened.
03 - Add garlic and cook for 1 minute more. Add ground beef and cook until browned, breaking up any clumps.
04 - Stir in tomato paste and flour; cook for 2 minutes to remove raw flour taste.
05 - Gradually add beef stock while stirring. Add Worcestershire sauce, thyme, rosemary, and bay leaf. Bring mixture to a simmer.
06 - Reduce heat and simmer uncovered for 20 minutes, stirring occasionally, until thickened. Remove bay leaf, stir in peas, and season with salt and pepper. Remove from heat.
07 - Place potatoes in a large saucepan, cover with cold salted water, and bring to a boil. Simmer for 15–20 minutes until tender.
08 - Drain potatoes and return to pot. Add butter and warm milk; mash until smooth and fluffy. Season with salt and white pepper. Stir in egg yolk if desired.
09 - Spoon beef filling into a large baking dish. Spread mashed potatoes evenly on top, texturing with a fork for a rustic finish.
10 - Place the dish on a baking tray and bake for 25–30 minutes until the topping is golden and the filling bubbles at the edges.
11 - Allow to rest for 10 minutes before serving to let flavors meld.