In a large skillet over medium heat add the butter. Once melted add the onion and carrots. Cook until onion is translucent, about 5 minutes.
Add the ground beef (or lamb) to the skillet and using a wooden spoon, break apart the meat. Add the garlic, parsley, rosemary, thyme, salt, and pepper. Cook until the meat has browned, about 8 minutes. Stir in the Worcestershire sauce, flour, and tomato paste.
Add the beef broth, frozen peas, and frozen corn. Bring to a boil then reduce to a simmer and simmer for 5 minutes. Transfer the meat mixture to a 9"x9” baking dish that has been sprayed with nonstick cooking spray.
Preheat oven to 375°F
Potato Topping
Place chopped potatoes in a large pot. Fill with water and place over medium-high heat and bring to a boil. Boil the potatoes until very fork tender. Drain the water. Mash the potatoes then add the butter, half and half, garlic powder, kosher salt, and pepper. Continue mashing until smooth and combined.
Spoon the potato mixture on top of the meat and spread it into an even layer. Bake uncovered for 30 minutes. Let cool for 10 minutes before serving.
Notes
To make in a slow cooker, rather than place the meat mixture in a baking dish, add it to the bottom of a (nonstick cooking sprayed) slow cooker or crock pot. Layer the mashed potatoes overtop and place on low for 3-4 hours or on high for 2 hours.Store any leftovers covered or in an airtight container in the fridge for 3-5 days.