Desserts
This traditional fish pie recipe delivers the comforting, creamy layers that make it a British classic—rich white sauce, tender fish, and a golden mashed potato crown that seals in every flavor.
The technique I’ve perfected ensures the fish stays moist while the topping achieves that signature crispy finish, just like your grandmother’s version. What sets this apart is the balance of textures: velvety mashed potatoes on top, flaky fish beneath, and a sauce so smooth it melts in your mouth.
The foundation begins with steamed fish—haddock, cod, or a mix—poached until just tender, then folded into a velvety white sauce thickened with cornstarch. This isn’t the heavy, greasy pie of old; it’s light yet satisfying, with a touch of lemon to brighten the flavors.
The mashed potato topping isn’t just decoration—it’s a structural masterpiece, binding the pie while creating that coveted golden crust. Every layer works in harmony, from the first bite of creamy filling to the final crunch of the potato crown.
What makes this recipe truly traditional is the method: no shortcuts, no substitutions that compromise flavor. The fish is steamed to perfection, the sauce is reduced to just the right consistency, and the mashed potatoes are whipped to a silky texture before being piped into a crown.
This isn’t a rushed weeknight meal—it’s a labor of love that transforms simple ingredients into something extraordinary. The result? A pie so rich and comforting, it feels like a hug on a plate.
Serve it with a crisp green salad or steamed vegetables to balance the richness, and you’ve got a meal worthy of any special occasion. The key to success lies in the details: precise steaming times, proper sauce thickening, and that perfect potato topping.
Let’s bring this classic to your table with confidence.
Ingredients for traditional fish pie
Six ingredients for the fish filling, six for the potato crown—twelve staples to recreate a British classic.
| Ingredient | Amount | Notes |
|---|---|---|
| Haddock Fillets 🐟 | 1 ½ lb | Skin-on for texture, cut into chunks |
| Cod Fillets 🐟 | 1 ½ lb | Skin removed, cut into chunks |
| Russet Potatoes 🥔 | 3 lbs | Yukon gold works too, peeled |
| Unsalted Butter 🧈 | ¾ cup | Full-fat for creaminess, cubed |
| Whole Milk 🥛 | 1 ½ cups | Warmed for smooth mash |
| Heavy Cream 🥛 | ½ cup | Full-fat for richness |
| All-Purpose Flour 🌾 | 2 tbsp | For sauce thickening |
| Lemon Juice 🍋 | 2 tbsp | Freshly squeezed, brightens flavors |
| Garlic Cloves 🧄 | 4 cloves | Minced, not powdered |
| Shallots 🧅 | 2 whole | Minced, or sub with onions |
| Dry White Wine 🍷 | ½ cup | Sauvignon Blanc preferred |
| Chicken Stock 🍲 | 1 ½ cups | Low-sodium preferred |
| Salt 🧂 | 1 ½ tsp | Kosher, adjust to taste |
| Black Pepper 🌶️ | ½ tsp | Freshly cracked |
| Fresh Parsley 🌿 | ¼ cup | Chopped, for garnish |
The fish is where it all begins. Haddock and cod are the traditional pair—flaky and mild, perfect for soaking up the creamy sauce. Grab them fresh from the seafood counter (or frozen if that's what's available), but never pre-breaded or battered. Look for fillets with a bright, clean smell and firm texture. If you're using frozen, thaw them overnight in the fridge—never under running water, or they'll turn to mush. The potatoes? Russets or Yukon golds they're the secret to that velvety mash. Skip the waxy varieties—they'll turn gummy. And for the butter? European-style if you can find it—it has more fat content, which gives the mash that luxurious texture.
No white wine? Substitute extra chicken stock—just skip the deglazing step. Fresh parsley wilting? Dried parsley at one-third the amount works in a pinch, though it lacks that bright pop. The shallots can be swapped for onions (use half the amount), but they add a subtle sweetness that's worth the effort. If you're short on time, instant mash is a game-changer—just add a splash of milk and butter to the box. And for the sauce? If it gets too thick, a splash of milk or stock will save it every time. The key is patience—let the sauce simmer until it's glossy, not gluey.
This pie tastes even better the next day, so make it ahead if you can. The filling keeps for 2 days in the fridge, and the mashed potatoes can be prepped a day in advance—just reheat with extra butter and milk before assembling. For the full experience, bake it in a cast-iron skillet—it browns beautifully and adds that restaurant-quality crust. Leftovers? Reheat gently in the oven with foil to keep the topping from drying out. And if you're feeling fancy, a sprinkle of Parmesan on top before baking adds a savory kick.
Why You'll Love This Recipe
- One-Pot Wonder: I swear by this for lazy nights—just poach the haddock and cod together, mash the potatoes right in the same pot, and layer it all under melted butter and milk. No extra dishes, no stress.
- Creamy Crisp Magic: That buttery milk sauce on top? It’s the star—golden and crackly, while the flaky fish underneath melts in your mouth. Honestly, the first bite makes me forget it’s "just" fish.
- Weeknight Workhorse: Make a double batch on Sunday, and you’ve got lunches for days. The potatoes stay creamy when reheated, and the fish? Still tastes like Sunday, not leftovers.
- Budget-Friendly Luxury: Fresh haddock and cod might sound fancy, but they’re cheaper than chicken in my area, and potatoes stretch this into a full meal. Feeds four for under $20—comfort food that doesn’t break the bank.
Step-by-step instructions for traditional fish pie
Here's how to build a classic fish pie with flaky fish, rich sauce, and velvety mashed potatoes.
Prepare the Fish Filling
Pat the 1.5 lb haddock fillets and 1.5 lb cod fillets completely dry with paper towels—this ensures they stay crispy, not soggy. Cut both types into 1-inch chunks and set aside in a bowl. In a large skillet, melt 0.25 cup of the unsalted butter over medium heat. Add the minced 4 cloves garlic and 2 whole shallots, cooking for 3-4 minutes until softened but not browned.
Pour in the 0.5 cup dry white wine and let it simmer for 2 minutes to cook off the alcohol. Add the fish chunks and cook gently for 3-4 minutes until they turn opaque and begin to flake. Stir in the 2 tbsp lemon juice, 1.5 cups chicken stock, and 1.5 tsp salt. Bring to a gentle simmer and let it cook for 5 minutes—this lets the flavors meld. The mixture should be moist but not soupy. Remove from heat and stir in the 0.25 cup chopped fresh parsley. This filling is the heart of your pie, so don't rush the seasoning.
Make the Creamy Sauce
In the same skillet (no need to clean it—the fish flavors will infuse the sauce), melt the remaining 0.5 cup unsalted butter over medium-low heat. Whisk in the 2 tbsp all-purpose flour and cook for 1-2 minutes until it forms a smooth paste. Gradually whisk in the 1.5 cups whole milk and 0.5 cup heavy cream, stirring constantly to prevent lumps. Let the sauce thicken for 5-7 minutes, stirring often, until it coats the back of a spoon and leaves a trail when you run your finger through it.
Season with 0.5 tsp black pepper and taste—you might need a pinch more salt. The sauce should be velvety and rich, not thin or grainy. If it's too thick, whisk in 1-2 tablespoons of warm milk to loosen it. Pour this sauce over the fish mixture and stir gently to combine. This creamy layer is what makes a traditional fish pie so comforting—don't skip the proper thickening.
Boil and Mash the Potatoes
While the fish sauce simmers, peel and cut the 3 lbs russet potatoes into 1-inch chunks. Place them in a large pot of salted water and bring to a boil. Cook for 12-15 minutes until fork-tender—you want them to collapse easily but still hold their shape slightly. Drain well and return them to the pot.
Add the 0.75 cup unsalted butter and 1.5 cups whole milk to the warm potatoes. Mash until completely smooth, then season generously with salt and pepper to taste. The mash should be light and fluffy, not gluey. For extra creaminess, press it through a ricer or fine-mesh sieve. Spread this mashed potato layer evenly over the fish filling in your baking dish—it's the golden crown that makes this dish look (and taste) special.
Bake to Golden Perfection
Preheat your oven to 375°F. Transfer the fish mixture to a 9x13-inch baking dish and spread it evenly. Top with the mashed potatoes, using a spatula to create gentle peaks and swirls for texture. Bake uncovered for 25-30 minutes until the top is golden brown and the edges are bubbling. The center should still be slightly jiggly—it'll finish cooking as it rests.
Let the pie rest for 10 minutes before serving—this lets the juices redistribute so every bite is moist. Garnish with extra chopped parsley for color and freshness. The contrast of the creamy sauce, flaky fish, and buttery potatoes is what makes this dish a classic. Serve with a crisp green salad to cut through the richness.
Pro Tips For Making Traditional Fish Pie
- PARBOIL POTATOES FIRST: Potatoes that steam instead of crisp up ruin the whole pie. Drop peeled, quartered russets into boiling salted water for 8 minutes—just until they’re fork-tender but still hold shape. Drain well and shock in ice water to stop cooking; this keeps them firm enough to mash into a smooth, creamy base.
- USE COLD BUTTER FOR MASH: I learned this the hard way—mashing hot potatoes with softened butter makes a greasy, lumpy mess. Let the potatoes cool slightly after draining, then fold in cold, cubed butter while mashing. The butter melts gradually, creating a velvety texture without turning the mash into soup.
- DON’T OVERCOOK THE FISH: Haddock and cod cook fast—3 to 4 minutes max in butter until just opaque. Overcooking turns them rubbery, and the pie will taste like regret. Pull them out when they flake easily with a fork, then season immediately with lemon juice and pepper while they’re still warm.
- MAKE THE SAUCE LAST: The milk-and-butter sauce is where flavor hides. After removing the fish, keep the pan on low heat and whisk in 1 cup warm milk (not boiling) with a splash of fish stock or water. Simmer for 2 minutes—this thickens it enough to coat the fish without curdling, and it keeps the pie from feeling soggy.
Regional styles of this recipe
Scottish Coastal Style
The Scottish version of fish pie often features smoked haddock instead of plain cod, giving it a deeper, smoky flavor that pairs beautifully with the creamy sauce. I like to add a splash of Scotch whisky (about 1 tablespoon) to the white sauce for a subtle, warming depth.
The mashed potato topping is sometimes mixed with a bit of grated cheddar before baking, creating a crispy, cheesy crust that’s irresistible. 🏴
Cornish Creamy Classic
In Cornwall, the pie often includes local pilchards or mackerel alongside cod, adding a richer, slightly oilier texture to the filling. The sauce gets a touch of cream cheese (about 2 ounces) whipped into the mashed potatoes before topping, which keeps the filling extra moist.
Cornish cooks also love to finish the pie with a drizzle of crème fraîche before serving—it adds a tangy contrast to the richness. 🌊
Irish Potato Topping Twist
Across the Irish Sea, the mashed potato topping often incorporates a bit of Irish cream liqueur (like Baileys, about 1 tablespoon) mixed into the sauce. This adds a velvety sweetness that balances the savory fish perfectly.
Some versions also include finely chopped parsley and chives in the potato layer for a fresh, herby finish. The pie is traditionally served with buttered cabbage on the side. 🍀
Welsh Leek-Inspired Filling
In Wales, leeks are a staple, and they often find their way into fish pie fillings. I like to add 2 finely chopped leeks (about ½ cup) to the fish mixture along with the shallots, giving the dish a subtle sweetness and earthiness.
The mashed potato topping might also include a sprinkle of Welsh cheese (like Caerphilly) for a sharp, tangy kick. This version is especially popular in autumn. 🧅
English Pub Favorite
The classic English pub version often includes a layer of breadcrumbs mixed into the mashed potato topping for extra crunch. I like to toast ½ cup breadcrumbs in the oven with 1 tablespoon melted butter before mixing them into the potatoes.
Some pubs even add a pinch of nutmeg to the sauce for warmth, making it a cozy, comforting dish perfect for chilly evenings. 🍺
Modern Fusion Twist
For a contemporary take, I’ve experimented with adding smoked paprika (about ½ teaspoon) to the fish filling and swapping half the milk in the sauce for coconut milk for a lighter, slightly tropical flavor.
The mashed potato topping stays traditional, but the filling gets a fresh, unexpected twist that still feels true to the classic. 🌟
Nutrition facts
Frequently asked questions
Can I substitute other types of fish for haddock and cod?
Mild white fish like halibut, pollock, or even flounder work beautifully. For stronger flavors, try monkfish or salmon—but reduce the lemon juice to 1 tablespoon since they're naturally richer. Avoid oily fish like mackerel (unless you're making the Cornish-style version with pilchards). Always cut fish into 1-inch chunks for even cooking.
Why does my mashed potato topping turn out gummy?
Overcooking the potatoes is the #1 culprit! Boil them just until fork-tender (12-15 minutes), then mash while still warm with plenty of butter. For ultra-smooth mash, press through a ricer. If it's too thick, whisk in 1-2 tablespoons warm milk—never water. And always use full-fat butter; low-fat versions lack the fat needed for creaminess.
Can I make this ahead of time?
This pie actually tastes better the next day! Assemble it completely (even the potato topping), cover tightly with foil, and refrigerate for up to 24 hours before baking. For make-ahead convenience, prep the filling and sauce separately—they keep 2 days in the fridge. The mashed potatoes can be made a day ahead too; just reheat with extra butter and milk before topping the pie.
What's the secret to a crispy potato topping?
Three things: 375°F oven, uncovered baking, and 10 minutes of rest after baking. For extra crunch, broil for 2-3 minutes at the very end (watch closely!). The potatoes should be piping hot when you pipe them on top—this creates steam that helps them brown beautifully. And always use a 9x13-inch baking dish; smaller pans can make the topping soggy.
Is there a vegetarian version of this recipe?
Not traditionally, but you can create a similar structure! Swap the fish for chickpeas or butternut squash in the filling, and use a cashew cream sauce (blend soaked cashews with vegetable stock). The mashed potato topping stays the same, and you could add sautéed mushrooms for umami depth. The texture won't be identical, but it captures the comforting pie concept.
