Preheat oven to 400°F (200°C).
- Boil peeled and cubed potatoes in salted water until fork-tender. Drain, then mash with butter and milk until smooth. Set aside.
- In a large skillet, heat olive oil or butter over medium heat. Add onion, carrots, and celery. Sauté for 5–7 minutes until softened.
- Add garlic and cook for 1 more minute.
- Add ground beef and cook until browned. Drain any excess fat.
- Stir in tomato paste, Worcestershire sauce, flour, thyme, salt, and pepper. Mix well.
- Pour in beef broth and simmer until thickened, about 10 minutes.
- Stir in frozen peas and remove from heat.
- Transfer meat mixture to a greased baking dish. Spread mashed potatoes evenly over the top.
- Optional: Sprinkle with shredded cheese.
- Bake for 20–25 minutes until heated through and the top is golden. Broil for 2–3 minutes for a crispier top, if desired.
- Let rest for 5–10 minutes before serving.