Heat olive oil in a large skillet on medium-high for 2 minutes. Add the onions and carrots. Cook for 5 minutes, or until the onions begin to turn translucent.
Add the ground beef and break apart with a spoon. Add the parsley, rosemary, thyme, salt, and pepper. Stir until all combined. Cook until the meat is thoroughly browned.
Add the Worcestershire sauce and garlic. Cook for 1 minute. Add the flour and tomato paste and stir until there are no clumps.
Add the beef broth, frozen peas, and frozen corn. Bring to a boil then reduce to a simmer, simmering for 5 minutes. Sit occasionally.
Set aside and preheat oven to 400°F.
Prepare the potato topping by placing the potatoes in a large pot and covering with water. Bring to a boil, then reduce to a simmer. Simmer for 10-15 minutes, until potatoes are fork tender.
Drain the potatoes and place in a large bowl. Add the butter, half and half, garlic powder, salt, and pepper. Mash the potatoes or use a hand mixer until the potatoes are smooth. Add the parmesan cheese and stir until well combined.
Pour the meat mixture into a 2½ quart baking dish. Spread into an even layer. Spoon the mashed potatoes over the meat layer. Carefully spread the potatoes into an even layer.
Bake uncovered for 25-30 minutes. Cool for about 10 minutes before serving.