Heat a 12-inch oven-safe skillet over medium-high heat. Add ground beef salt and pepper and cook until browned. Drain beef and remove and set aside.
Add in onion, carrots, and celery cook for 3 minutes or just until soft. Add in garlic and cook and another minute.
Stir in flour, and tomato paste and cook another 30 seconds or so.
Pour in the wine, stock bouillon cube, Worcestershire sauce, thyme, bay leaf, and add the ground beef back into the pan. Simmer 30 minutes.
Remove bay leaves and add in corn and peas. If you didn't prepare in an oven-safe skillet, transfer to a 2-quart oven-safe dish. Cover and refrigerate for at least 30 minutes the longer the better. ( You want the layers to stay separate while baking.)
Add diced potatoes to a pot of cold water. Add 2 teaspoons salt. Bring to a boil, then reduce to simmer and cook for 20-25 minutes or until potatoes are fork-tender. Drain the potatoes in a strainer, then pour potatoes back into your pot. While the potatoes are still hot add in your melted butter, warm milk, and cream cheese. Using a hand mixer, mix until creamy. Add salt and pepper to taste.
Preheat oven to 375 degrees.
Spread warm mashed potatoes over meat mixture.
Using a fork to make lines in the potatoes, and sprinkle mozzarella cheese over the top.
Place skillet on a baking sheet to prevent bubbling over into the oven. Bake for 30-35 minutes or until the top is golden.
Sprinkle with chopped fresh parsley if desired.
Video
Notes
Cooling the filling helps to ensure the potatoes will stay on top of the filling.If using leftover mashed potatoes you will need approximately 5 cups. Make sure to warm them up before spreading.