Main Courses
This fish shepherd's pie recipe transforms a classic comfort dish into a seafood masterpiece with its flaky potato topping and tender fish filling. The fusion of creamy mashed potatoes and delicate fish creates a dish that’s both nostalgic and refined—perfect for a hearty yet elegant dinner.
I developed this version after realizing how versatile shepherd’s pie could be when adapted for seafood lovers.
The secret lies in the fish filling, where flaky white fish like cod or haddock is gently poached until just tender, then combined with herbs and a light cream sauce.
Meanwhile, the potato topping gets its signature flakiness from a precise ratio of butter, cream, and a touch of garlic, baked until golden and crisp at the edges. Every bite delivers a perfect balance of textures and flavors.
This dish is ideal for family dinners or special occasions, serving as a satisfying main course with minimal effort. Pair it with a simple green salad or steamed vegetables to round out the meal.
The recipe scales easily, making it perfect for leftovers or entertaining. Let’s get started on creating this modern twist on a classic favorite.
What makes this version stand out is the flexibility—swap in smoked salmon for extra depth, or add fresh dill and tarragon for a brighter herb profile. The key is achieving that flaky potato crust while keeping the fish filling moist and flavorful.
With just a few simple techniques, you’ll have a dish that feels restaurant-quality without the fuss.
Ingredients for fish shepherd's pie
The secret to this flaky fish shepherd's pie lies in these simple yet essential ingredients.
| Ingredient | Amount | Notes |
|---|---|---|
| White Fish Fillets (Cod or Haddock) 🐟 | 1 ½ lb | Skinless, boneless, cut into chunks |
| Russet Potatoes 🥔 | 2 ½ lb | Medium size, peeled and cubed |
| Unsalted Butter 🧈 | ½ cup | Cold, cubed for mashed potatoes |
| Heavy Cream 🥛 | ½ cup | Full-fat for creaminess |
| Milk 🥛 | ¼ cup | Whole milk preferred |
| Garlic Cloves 🧄 | 3 cloves | Minced for potato topping |
| Fresh Parsley 🌿 | ¼ cup | Chopped, for fish filling |
| Fresh Dill 🌿 | ¼ cup | Chopped, optional but recommended |
| Shallots 🧅 | 2 whole | Minced, for fish filling |
| Lemon Juice 🍋 | 1 tbsp | Freshly squeezed |
| Salt 🧂 | 1 ½ tsp | Kosher or sea salt |
| Black Pepper 🌶️ | ½ tsp | Freshly ground |
| Olive Oil 🫒 | 1 tbsp | Extra-virgin for cooking fish |
| Chicken or Vegetable Broth 🍲 | ½ cup | Low-sodium preferred |
The fish is the star, so pick cod or haddock—they stay tender and flaky when poached. If you're at Whole Foods or a well-stocked seafood market, ask for the freshest cut. For the potatoes, Russets are non-negotiable—they're starchy enough to hold their shape when baked. I always buy a few extra potatoes because they're cheap and you can use the leftovers for breakfast hash. The butter matters too—European-style butter has more fat, which is key for that ultra-creamy mash. Grab a block, not the tub kind.
No cod or haddock? Tilapia or pollock work in a pinch, but they're less flavorful. Fresh fish is ideal, but frozen works fine if you thaw it properly. For the herbs, if you don't have dill, extra parsley or chives will still taste great. The shallots can be swapped for regular onions, but they add a sweeter, more delicate flavor. If you're short on time, pre-minced shallots from a jar are fine—just rinse them well to remove excess liquid. The broth? Low-sodium is crucial—otherwise, you'll end up with a salty filling.
This pie reheats beautifully—just cover it with foil and bake at 375°F for 20-25 minutes. The leftovers taste even better the next day because the flavors meld. Store it in the fridge for up to 4 days, or freeze for 3 months. I like to portion it into individual servings before freezing so I can just pop one out for a quick meal. The potato topping keeps its flakiness best when reheated gently, so don't rush it.
Why You'll Love This Recipe
- One-Pan Magic: I swear by this recipe when I’m too tired to scrub pots—just boil potatoes, flake the fish, and mash everything together. The creamy milk-butter sauce sticks to the pan like glue, so cleanup is basically rinsing a sheet.
- Creamy Crispy Contrast: That golden potato topping with the flaky, buttery fish underneath? It’s the kind of texture combo that makes you pause mid-bite. The heavy cream keeps it rich without being heavy, and the Russets add that perfect crispy edge.
- Lunchbox Hero: Between us, this is my go-to for meal prep. Assemble it ahead, refrigerate, and reheat slices straight from the fridge—no weird textures, just warm, comforting fish pie. My kids pack leftovers in their lunches, and honestly? I’d eat it cold too.
- Budget-Friendly Luxury: Cod’s cheap, potatoes are cheap, and a stick of butter stretches far. Yet it tastes like a fancy bistro dish. I’ll be real: I’ve served this to guests who swore it was from a Michelin-starred menu. (Spoiler: It’s not, but it’s still delicious.)
Step-by-step instructions for fish shepherd's pie
Here's how to create a restaurant-worthy fish shepherd's pie with a crispy potato topping and flaky fish filling.
🍳 Step 1: Cook the Fish Filling to Perfection
Heat the olive oil in a large skillet over medium heat. Add the 2 minced shallots and cook for 3-4 minutes until soft and translucent. Add the 3 minced garlic cloves and cook for another 30 seconds until fragrant.
Push the shallots and garlic to the side of the pan, then add the 1.5 lb white fish fillets in a single layer. Cook for 3-4 minutes per side until the fish is opaque and flakes easily with a fork. Real talk: don't overcook the fish or it'll turn rubbery.
Remove the fish from the pan and transfer it to a mixing bowl. Add the 0.5 cup chicken or vegetable broth, 0.25 cup chopped parsley, 0.25 cup chopped dill, 1 tbsp lemon juice, 1.5 tsp salt, and 0.5 tsp black pepper. Mix gently to combine. The fish should be just warm enough to melt the butter we'll add next.
👨🍳 Step 2: Prepare the Creamy Fish Mixture
Return the skillet to medium-low heat and add the 0.5 cup unsalted butter. Let it melt completely, then pour in the 0.5 cup heavy cream and 0.25 cup milk. Stir constantly for 2-3 minutes until the mixture begins to thicken slightly.
Add the fish mixture to the skillet and stir gently to coat everything in the creamy sauce. The heat from the pan will warm the fish just enough to meld all the flavors together. Remove from heat and let it cool for 5 minutes—this prevents the potatoes from steaming when we assemble.
Here's the thing—this step ensures your fish filling stays moist and flavorful under that thick potato layer. If you skip it, you'll end up with dry fish at the bottom of your pie.
🥘 Step 3: Cook and Mash the Potatoes
While the fish cools, place the 2.5 lb russet potatoes in a large pot and cover with cold water by about 1 inch. Add 1 tsp salt and bring to a boil over high heat. Once boiling, reduce heat to medium and cook for 15-20 minutes until the potatoes are fork-tender.
Drain the potatoes thoroughly, then return them to the pot. Add the remaining 0.5 cup unsalted butter and mash until smooth. You want the texture to be creamy but not gluey—if it's too thick, add 1-2 tablespoons of the potato cooking water to loosen it.
This is where the magic happens for that perfect flaky topping. The butter creates steam when baking, which helps create those beautiful crispy edges while keeping the interior tender. Don't skip the butter—it's non-negotiable for that bakery-style finish.
🔥 Step 4: Assemble and Bake the Shepherd's Pie
Preheat your oven to 400°F. Spread the fish mixture evenly in a 9x13-inch baking dish, creating a base about ½-inch thick. Use a spatula to smooth the top—this ensures even baking and a pretty presentation.
Spoon the mashed potatoes over the fish filling, spreading them evenly to create a smooth, even layer. Use the back of a spoon to create some texture on top—this helps the potatoes crisp up better. Bake for 25-30 minutes until the top is golden brown and crispy.
Here's the crucial part: don't open the oven during baking. The steam is what creates that perfect texture, and every time you peek, you lose that steam and risk a soggy topping. The internal temperature should reach 165°F at the center.
⏰ Step 5: Rest and Serve with Confidence
Remove the shepherd's pie from the oven and let it rest for 10 minutes before serving. This resting period allows the filling to set slightly and makes it easier to slice cleanly. The contrast between the crispy potato topping and flaky fish filling is what makes this dish truly special.
To serve, slice into squares or rectangles and arrange on plates. Garnish with additional chopped parsley if desired. The first bite should deliver that perfect combination of crispy, creamy, and flaky textures—exactly what you're after with this recipe.
Pro tip: If you're serving this for a dinner party, you can make it ahead and refrigerate it (unbaked) for up to 24 hours. Just add 10-15 minutes to the baking time when you're ready to serve.
Pro Tips For Making Fish Shepherd'S Pie
- CRISP THE POTATOES LOW AND SLOW: I used to blast the oven at 425°F for the potato topping, but it always turned out dry or uneven. Instead, bake them at 375°F for 45 minutes—just until a knife slides in cleanly. The gentle heat keeps them fluffy and guarantees that golden crust without burning the edges.
- SEAR THE FISH IN BATCHES: Thin fish fillets cook fast, and crowding the pan steams them instead of searing. Work in single layers, no more than 2 fillets at a time, for 2–3 minutes per side—just until opaque. Overcooking turns them rubbery, and no one wants that under a mountain of potatoes.
- SALT THE POTATO WATER LIKE THE SEA: Skip the "lightly salted" advice—this isn’t a delicate flower. Use 2 tablespoons of salt per 4 quarts of water. The potatoes absorb flavor, and the topping stays cohesive. (Yes, even if you’re impatient like me, don’t rinse them after boiling—keep that starch for binding.)
- STIR THE CREAM SAUCE OFF HEAT: The second you whisk in the heavy cream and milk, remove the pan from heat. Simmering risks breaking the cream or making it grainy. Let the residual heat warm it through—smooth, velvety, and ready to coat the fish without curdling. (Trust me, you’ll taste the difference.)
Regional styles of this fish shepherd's pie
British Classic Twist
In traditional British cuisine, this dish often features smoked haddock instead of plain cod, giving it a deeper, smoky flavor that pairs beautifully with the creamy potato topping. I like to add 1 teaspoon of smoked paprika to the fish filling for extra depth—it’s a subtle but noticeable upgrade.
Serve with a side of buttered peas and a malt vinegar drizzle for that quintessential British pub feel. 🌟
New England Coastal Style
Up north, the focus shifts to local white fish like pollock or halibut, often combined with fresh dill and chives for a bright, herby profile. I’ve seen versions where the mashed potatoes are mixed with a splash of cream cheese for extra richness.
Pair this with a crisp white wine like Sauvignon Blanc and steamed asparagus to highlight the coastal flavors. The key here is keeping the dish light yet hearty—perfect for chilly New England winters.
Mediterranean Fusion
For a brighter twist, swap the parsley and dill for fresh tarragon and basil, and add sun-dried tomatoes to the fish filling. Use olive oil instead of butter in the mashed potatoes and top with toasted pine nuts before baking.
This version works beautifully with grilled lemon wedges on the side—just squeeze fresh juice over each serving. The Mediterranean influence keeps the dish vibrant and summery. 🍋
Scottish Seafood Adaptation
In Scotland, they often use langoustines or prawns instead of fish fillets, creating a seafood medley that’s rich and decadent. The mashed potatoes might include a touch of whisky in the butter for a smoky note, and the dish is typically served with brown butter beans on the side.
For a true Scottish touch, garnish with fresh chives and a sprinkle of flaky sea salt. This version feels luxurious but still cozy.
Modern Vegetarian Swap
If you’re avoiding fish entirely, try replacing the cod with chickpeas or lentils simmered in a lemon-herb broth until tender. Boost the flavor with smoked paprika and a splash of soy sauce for umami depth.
The mashed potatoes stay the same, but the filling gains a hearty, protein-packed texture. This version is perfect for plant-based eaters who still crave that comforting shepherd’s pie experience. 🌱
Southern U.S. Comfort Food
Down South, this dish often gets a Cajun or Creole twist, with the fish filling spiked with hot sauce, cayenne, and a pinch of thyme.
The mashed potatoes might include a dash of cream cheese for extra creaminess, and the whole pie is baked until the edges are deep golden and crispy. Serve with collard greens and cornbread for a full Southern feast.
The heat level can be adjusted to your preference—just add ½ to 1 teaspoon of cayenne for a kick. 🌶️
Nutrition facts
Frequently asked questions
Can I use frozen fish in this recipe?
Yes, but thaw it properly first. Place frozen fish fillets in the refrigerator overnight or use the quick thaw method by submerging the sealed package in cold water (change the water every 30 minutes). Never microwave frozen fish—it can cook unevenly and ruin the texture. For best results, pat the thawed fish dry with paper towels before cooking.
How do I make the potato topping extra crispy?
For that perfect golden crust, preheat your oven to 425°F instead of 400°F and brush the mashed potatoes with a little extra heavy cream or melted butter before baking. Also, use a metal baking dish—it conducts heat better than glass. For extra crunch, sprinkle breadcrumbs or grated Parmesan on top before the final 5 minutes of baking.
What's the best way to reheat leftovers?
Cover the pie with foil and reheat at 375°F for 20-25 minutes to prevent drying. For individual portions, microwave for 1-2 minutes on medium power after removing the foil. The potato topping stays flaky when reheated gently—never microwave uncovered. Leftovers keep well for 4 days in the fridge or 3 months frozen.
Can I make this dish ahead of time?
Assemble the pie (without baking) up to 24 hours ahead and refrigerate. When ready to bake, add 10-15 minutes to the baking time. For make-ahead freezing, assemble and bake the pie, then cool completely. Wrap tightly in foil and freeze for up to 3 months. Thaw overnight in the fridge before reheating.
What fish works best if I don't have cod or haddock?
For similar texture, use tilapia, pollock, or halibut. Avoid firm white fish like mahi-mahi or swordfish—they stay too dense. If using frozen seafood, check for any added water or anti-caking agents that might dilute flavors. For extra richness, try smoked trout or salmon instead of plain white fish.
