Heat olive oil in a large skillet over medium-high heat. Add chopped onions and sauté for 5 minutes until softened.
Add the ground beef or lamb and cook, breaking it up with a spoon, until browned. Add parsley, rosemary, thyme, salt, and pepper.
Stir in Worcestershire sauce and minced garlic. Cook for 1 minute.
Add tomato paste and flour. Stir until evenly combined.
Pour in beef broth, peas and carrots, and corn. Simmer for 5 minutes until thickened. Set aside.
Preheat oven to 400°F (200°C).
Boil potatoes in salted water for 10–15 minutes until fork-tender. Drain and return to pot.
Add butter, half and half, garlic powder, salt, and pepper. Mash until smooth. Stir in grated parmesan.
Spread meat filling in a baking dish. Top with mashed potatoes and smooth the surface.
Bake uncovered for 25–30 minutes until golden on top and bubbling at the edges. Rest 15 minutes before serving.