Preheat oven to 375°F.
First step, cook the potatoes. Add potatoes to a large pot, cover with cold water, heat to a boil and cook potatoes until fork tender then drain. Or use my Instant Pot Mashed Potatoes Recipe. While the potatoes cook, brown the beef in a large deep skillet over medium heat until no longer pink. Drain any grease.
Add olive oil, chopped onions and carrots to the beef and cook until soft, about 3-4 minutes.
Stir in the the minced garlic and Worcestershire sauce.
Add flour, parsley, thyme, salt, black pepper and stir to coat everything. Cook for 1-2 minutes.
Slowly pour in the beef broth while stirring constantly. Bring to a boil, reduce heat to low and simmer for 3-4 minutes until thickened.
Remove beef from heat and stir in the frozen peas and corn.
Smooth and flatten the filling in an oven safe deep skillet, or transfer the filling to a 3 quart casserole dish then spread and smooth it out.
Once the potatoes are cooked and drained, mash them with the butter until smooth.
Stir in the milk, salt, and black pepper until potatoes are creamy.
Add the shredded cheeses and stir until they are melted and fully incorporated into the potatoes.
Scoop the potatoes over the beef filling and evenly spread them out. Use a fork to drag ridges on the potatoes.
Bake for 20-30 minutes until top is golden and filling is bubbling.
Let rest 10 minutes before serving.