Heat the olive oil in a large skillet over medium-high heat. Sauté the onions and garlic for about a minute, then toss in the finely chopped carrot, celery, and herbs. Cook this mixture until softened and aromatic. This base is what gives the pie its classic flavor.
Increase the heat to high and add the ground lamb or beef. Break it apart and cook until browned. Stir in the flour, followed by tomato paste, beef stock, wine (or water), bouillon cube, Worcestershire sauce, bay leaves, salt, and pepper. Let it simmer for 30 minutes until thick and saucy. Stir occasionally.
Once the sauce reaches a thick, gravy-like consistency, remove from heat. Stir in the frozen peas. Transfer the filling to your baking dish and let it cool for at least an hour. This step helps keep the layers separate and stops the mash from sinking.
Boil peeled and cubed potatoes in salted water until fork-tender (about 15 minutes). Drain and return them to the pot on low heat to steam dry. Add butter, mash until melted, then mix in milk, salt, and pepper. Aim for a smooth and spreadable consistency.
Preheat your oven to 350°F (180°C). Spread the mashed potatoes evenly over the cooled meat filling. Use a fork to make decorative ridges for texture. Sprinkle Parmesan on top and drizzle with melted butter.
Bake the pie for 30–40 minutes until the top is golden and bubbly at the edges. Let it rest for 5 minutes before serving so the layers settle beautifully.