Add oil to a large skillet and place over medium-high heat for two minutes. Add onions. Cook for 5 minutes, stirring occasionally.
Add ground beef (or minced lamb) to the skillet and break it up with a wooden spoon. Add parsley, rosemary, thyme, salt, and pepper. Stir well. Cook for 6-8 minutes, until the meat, is tender, stirring occasionally.
Add Worcestershire sauce and garlic. Stir until smooth. Cook for 1 minute.
Add flour and tomato paste. Stir to smooth out any lumps.
Add the broth, frozen peas, carrots, and frozen corn. Bring the mixture to a boil and then reduce the temperature and cook over low heat for 5 minutes stirring occasionally.
Leave the meat mixture aside. Heat the oven to 400 degrees Fahrenheit.
Make a layer of potatoes.
Put the potatoes in a large pot. Cover the potatoes with water. Bring the water to a boil. Cook the potatoes until soft, 10-15 minutes.
Drain the potatoes in a colander. Return the potatoes to the veiled pot.
Let the potatoes rest in the pot for 1 minute to evaporate any remaining liquid.
Add butter, half and half, garlic powder, salt, and pepper. Mash the potatoes and stir until all areas are combined.
Add Parmesan cheese to the potatoes. Stir until combined.
Assemble the casserole.
Pour the meat mixture into a deep baking dish. Spread it in an even layer. Spoon the mashed potatoes over the meat. Carefully spread evenly.
If the baking dish seems too full, frame a baking sheet with edges so the filling doesn’t seep into the oven.
Bake without a lid for 25-30 minutes.
Cool for 15 minutes before serving.