Preheat oven to 400F (205C).
Add butter and oil to a 10” (25cm) oven-safe skillet (see note) and cook over medium/high heat until butter is melted and skillet is hot.
Add onions and carrots and cook until softened, about 5 minutes.
Add garlic and cook until fragrant (about 30 seconds).
Add ground beef and cook, crumbling as you go, until meat is browned. Drain excess grease if/as needed.
Once beef is mostly cooked, add tomato paste, vinegar, salt, pepper, thyme and parsley and cook, stirring, until beef is completely browned.
Sprinkle flour overtop and cook, stirring, until flour is completely absorbed and then cook another 30 seconds while stirring.
While stirring, slowly drizzle in beef broth until combined (make sure to scrape the bottom of the pan!).
Add worcestershire and simmer, stirring occasionally, until sauce is thickened. Taste-test sauce and add salt/pepper if needed.
Stir in peas. Remove from heat and set aside while you prepare the potatoes.
Mashed Potatoes
Place potatoes in a large pot of cool water and add salt. Cook until potatoes are tender when pierced with a fork.
Drain potatoes and return to pot. Let them sit in the pot for a minute (to allow the water to evaporate), stirring once or twice, before proceeding.
Add butter, milk, salt, pepper, and parmesan cheese and use a potato masher to mash until smooth. Taste-test and add more salt/pepper as needed.
Top the meat layer with an even layer of potatoes. If desired, rake a fork across the surface (helps promote browning).
Transfer skillet to center of 400F (205C) oven and bake for 20-25 minutes or until potatoes on top are beginning to brown. If you’re worried about your skillet being too full, place a foil lined baking sheet beneath it to catch any possible spills. For deep browning on top of the potatoes, broil for 1-2 minutes before removing from oven.
Serve warm and enjoy!