Place the cubed Russet potatoes in a large pot, cover with cold heavily salted water, and bring to a boil. Cook 15 to 20 minutes until fork-tender. Drain well and return to the dry pot for 1 minute to steam off moisture.
Add the warm heavy cream, softened butter, and Parmesan. Whip or mash until smooth and fluffy. Season with the salt and pepper. Set aside.
Heat the olive oil in a large cast iron skillet or Dutch oven over medium heat. Add the onion, carrot, and celery and cook 6 to 7 minutes until soft.
Add the mushrooms and cook 4 to 5 minutes until their liquid has released and evaporated. Add the garlic and cook 1 minute more.
Add the ground beef and cook, breaking it up, until browned through. Drain off the excess grease.
Stir in the tomato paste and cook 2 minutes. Sprinkle the flour over the mixture and stir 1 minute until no dry flour remains.
Pour in the beef broth and Worcestershire sauce, scraping the bottom of the pan. Add the thyme and rosemary. Simmer 5 to 7 minutes until the gravy coats a spoon.
Stir in the zucchini and cook 3 minutes, then add the frozen peas. Taste and season with the salt and pepper. Remove from heat.
Heat the oven to 400°F. If needed, transfer the filling to a greased 9x13-inch baking dish and spread evenly.
Spoon the Parmesan mashed potatoes over the filling, spreading all the way to the edges to seal. Comb a fork across the surface to create ridges.
Bake 25 minutes, until the topping is golden and the filling bubbles at the edges. For a darker crust, broil 1 to 2 minutes, watching closely.
Rest 5 to 10 minutes before serving.