Heat the butter in a large skillet set over medium heat. Add in the beef and onion. Cook, breaking the beef apart and stirring it with a wooden spoon until the beef is browned and no longer pink and the onion is translucent, about 7-8 minutes.
2 tablespoons unsalted butter, 1 pound 90% lean ground beef, 1 yellow onion
Add in the frozen vegetables and garlic. Cook until the vegetables are warmed through, about 3-4 minutes.
1½ cups frozen mixed vegetables, 2 cloves garlic
Add in the tomato paste, flour, thyme, rosemary, salt, and pepper. Stir until no flour is visible.
2 tablespoons tomato paste, 2 tablespoons all-purpose flour, 1 tablespoon chopped fresh thyme, 2 teaspoons chopped fresh rosemary, ½ teaspoon kosher salt, ½ teaspoon ground black pepper
Stir in the beef stock and bring to a simmer. Cook for 2-3 minutes until the sauce has reduced slightly.
1 cup low-sodium beef stock
Spread the mixture out in a 7x11-inch baking dish and set aside.
Preheat oven to 400°F.
Add the potatoes to a large pot and cover with cold water. Heat on high until it boils. Reduce to a simmer and cook until the potatoes are fork tender, about 5 minutes. Drain well. Let the potatoes sit in the colander for 5 minutes to steam off any excess moisture.
2 pounds russet potatoes
Add the potatoes to a large bowl and mash with a potato masher.
Mash/stir in the cream, milk, parmesan, butter, salt, and pepper until uniform. Spread over the beef mixture.
½ cup heavy cream, ¼ cup milk, ¼ cup freshly shredded Parmesan cheese, 3 tablespoons unsalted butter, ½ teaspoon kosher salt, ¼ teaspoon ground black pepper
Bake for 25-30 minutes or until the potatoes are golden and the filling is bubbling. Cool for 10 minutes before serving.