High protein fish pie that skips the potato and still eats like proper comfort food. Smoked and fresh fish poach in milk, then layer up with a garlicky white sauce, peas, eggs, and a golden cauliflower-cottage-cheese mash. Two kinds of fish and six eggs put it at 55g of protein a serving, ready in just over an hour.

Key ingredients and substitutions

- Smoked and fresh fish: the protein backbone of the pie. The smoked fish brings depth, the fresh keeps it clean. I used basa and haddock. Any firm white fish works (cod, pollock, hake), just keep it roughly 50/50 smoked to fresh so the smoke does not take over.
- Hard-boiled eggs: six quartered eggs add protein and that classic fish-pie richness through the filling. Boil or air fry the eggs while the oven heats.
- Cottage cheese: goes into the cauliflower mash, adds protein, and blends the topping smooth. Blend it right in with an immersion blender. Thick Greek yogurt works as a swap, slightly tangier.
- Cauliflower: the no-potato topping that keeps the protein-per-calorie ratio high. For a more traditional mash, do half cauliflower and half potato, though that raises the carbs.
- Parmesan: the golden, salty crust, plus a little extra protein. Pecorino works, or use cheddar or gruyere for a meltier top.
- Milk: poaches the fish first, then becomes the sauce, so it carries the fish flavor through the whole dish. Whole milk is richest; semi-skimmed is fine; unsweetened almond or oat milk works for dairy-free.
- Carrots, onion, garlic: the aromatics that build the white sauce.
- Frozen peas: sweetness, color, and a little fiber. They go in straight from frozen.
- All-purpose flour: thickens the roux. Use a 1:1 gluten-free blend, or a cornflour slurry, if needed.
- Butter, salt, pepper, dried parsley, and whole cloves: the supporting cast. The cloves are optional and get pulled out before assembling.
How to make high protein fish pie
- Poach the fish. Pour 3 cups milk into a large pot with the diced half onion and the cloves. Bring to a gentle simmer over medium-high, add the smoked and fresh fish, and cook 5 to 8 minutes, until the fish just flakes. Lift it out with a slotted spoon into a 9×13 dish, discard the cloves, and reserve the poaching milk for later.



- Boil the cauliflower. While the fish poaches, boil the florets in salted water for about 10 minutes, until fork-tender. Drain very well and return to the pot.
- Blend the mash. Add the butter, cottage cheese, milk, salt, and pepper to the cauliflower and blend with an immersion blender until smooth.



- Start the sauce. Preheat the oven to 180°C/350°F. In the same poaching pot, melt the butter over medium-high, then add the garlic, onion, and carrots. Cook 3 to 5 minutes, until softened.
- Make the roux. Stir in the flour until it coats everything and turns paste-like.



- Add the milk. Pour in the reserved poaching milk a little at a time, whisking constantly so it stays smooth.
- Simmer. Let the sauce bubble gently and thicken for about 5 minutes. Stir in the parsley, then taste and season.


- Layer it up. Scatter the peas and quartered eggs over the fish, pour the sauce over the top, and stir gently to combine without breaking up the layers.
- Top with mash. Dollop the mash over the filling, spread it level with a spatula, then rake a fork across for ridges. Sprinkle the parmesan over the top.



- Bake. Bake 35 minutes, until golden and bubbling. For a crisper top, broil 3 to 5 minutes at the end, watching closely. Rest 5 minutes before serving.

Tips for getting it right
A runny fish pie almost always comes down to two things: a white sauce that never properly thickened, or cauliflower mash that went in wet. Get those right and the rest is easy.
- Cook the roux, then add the milk slowly. Whisk the poaching milk in a little at a time so the sauce thickens smooth instead of splitting.
- Drain the cauliflower hard. Press it with the back of a spoon if you need to. Wet mash will not crisp on top.
- Keep the fish 50/50. Equal smoked and fresh gives you smoky depth without the smoked flavor flattening everything else.
- Rake the mash, then broil. Fork ridges plus 3 to 5 minutes under the broiler are what give you crisp golden peaks.
- Taste before you salt. The poaching milk picks up salt from the smoked fish, so season the sauce right at the end.

Variations
- Salmon swap: replace half the fresh fish with salmon for more omega-3s and pink flecks through the filling.
- More seafood: add peeled prawns or scallops in the last minute of poaching to push the protein higher.
- Extra greens: fold a handful of chopped spinach or steamed broccoli in with the peas.
- Spicy kick: stir a teaspoon of Dijon or a pinch of cayenne into the sauce for gentle warmth against the smoky fish.
What to serve with high protein fish pie
- Vegetable: a sharp green salad or steamed green beans tossed in olive oil and garlic to cut the richness.
- Bread: a slice of Cottage Cheese Bread to mop up the sauce.
- Something tangy: dill pickles or a spoon of tartar sauce on the side for a briny contrast.
How to store high protein fish pie
- Fridge: keeps in an airtight container for up to 4 days, and the flavor deepens by day two.
- Freezer: cool fully, portion, and freeze up to 3 months. Thaw overnight in the fridge before reheating.
- Reheat: microwave a single portion for 2 to 3 minutes, or cover the whole dish with foil and warm at 180°C for 15 to 20 minutes. Add a splash of milk if the sauce has tightened.
- Make ahead: assemble it unbaked up to a day in advance, cover, and chill. Bake straight from the fridge with about 10 extra minutes.
Frequently asked questions
Usually the roux was not cooked enough or the milk went in too fast. Whisk the milk in gradually and let the sauce simmer the full 5 minutes before assembling.
Drain and press the cauliflower really well after boiling. If it is still loose, blend in a little more cottage cheese, or a pinch of xanthan gum to thicken without changing the flavor.
Broil for 3 to 5 minutes max on a middle rack and watch it the whole time. If it is browning too fast, tent it with foil for the last minute.
Yes. Use unsweetened almond or oat milk, dairy-free butter, and either skip the cottage cheese or swap in thick coconut yogurt. Drop the parmesan or use a vegan hard cheese.
You can add raw chopped fish straight to the dish and bake about 45 minutes to cook it through, but keep the pieces small for even cooking. Note you will lose the fish-flavored poaching milk that gives the sauce its depth.
Add extra cottage cheese to the mash, add extra fish or eggs, or fold chunks of firm tofu into the filling for another 10 to 15 grams per serving.

More high protein recipes you will love
- Shrimp Pasta Bake
- Smoked Salmon Sushi Bowl
- Creamy Ranch Chicken
- Tuscan Chicken (Marry Me Chicken)
- Chicken Spinach Lasagna
Have you made this recipe? I’d love to know <3 Tag me on Facebook and Instagram, Pin it on Pinterest, and please give it 5 stars with a review below! Don’t forget to subscribe to the email list (top right of this page) for sparkly new recipes in your inbox.

High Protein Fish Pie Recipe
Ingredients
- 1 lb smoked fish of choice - I used basa
- 1 lb raw unsmoked fish of choice - I used basa and haddock
- 3 cups filtered milk - or milk of choice
- ½ onion - diced
- 6 whole cloves - optional
White Sauce:
- 3 tablespoons unsalted butter
- 3 cloves garlic - minced
- ½ onion - finely chopped
- 2 carrots - finely chopped
- ⅓ cup all purpose flour - or gluten free all purpose flour
- ½ tablespoon dried parsley - or 2 tbsp fresh finely chopped
- salt and pepper - to taste
Cauliflower Topping:
- 2 heads cauliflower - cut into florets
- 2 tablespoons unsalted butter
- ½ cup cottage cheese
- ¼ cup filtered milk - or milk of choice
- 1 teaspoon salt
- ¼ teaspoon ground black pepper
Pie:
- 1 cup frozen peas
- 6 hard boiled eggs - quartered
- 25 g grated parmesan cheese
Instructions
For the Fish:
- Set a 9×13″ large casserole dish to the side.
- Add the filtered milk, cloves and diced ½ onion to a large pot on the stove over medium high heat.3 cups filtered milk, ½ onion, 6 whole cloves
- When it begins to gently simmer, add the fish and cook it until it begins to separate, about 5-8 minutes.1 lb smoked fish of choice, 1 lb raw unsmoked fish of choice
- Use a slotted spoon to remove the fish, onions, and cloves, spreading them out on the bottom of the 9×13″ casserole dish. Discard the 6 cloves. Save the milk in a glass measuring jug.
Cauliflower Mash:
- While the fish is simmering, bring a large pot of water to boil over high heat on the stove.
- Add the cauliflower and boil for about 10 minutes, until fork-tender.2 heads cauliflower
- Drain the cauliflower and return it to the pot.
- Add the remaining ingredients (cottage cheese, milk, seasoning) and blend with an immersion blender.2 tablespoons unsalted butter, ½ cup cottage cheese, ¼ cup filtered milk, 1 teaspoon salt, ¼ teaspoon ground black pepper
White Sauce:
- Preheat the oven to 180°C/350°F.
- Using the pot that had the milk and fish in it, melt the butter over medium-high heat.3 tablespoons unsalted butter
- Add the garlic, onion, and carrots, and sauté until they begin to soften, about 3-5 minutes.3 cloves garlic, ½ onion, 2 carrots
- Stir in the flour until it is completely mixed with the butter. It will be kind of gluey.⅓ cup all purpose flour
- A little at a time, pour and stir the saved 3 cups of milk from simmering the fish. Go slowly to avoid lumps. A whisk works well here too.
- Let the milk mixture come to a simmer, and cook until it becomes thicker, about 5 minutes.
- Stir in the parsley and adjust the salt and pepper to taste.½ tablespoon dried parsley, salt and pepper
Assemble and bake the pie:
- Scatter the frozen peas and quartered hard boiled eggs over the fish, and then pour over the white sauce mixture, making sure everything is spread evenly.1 cup frozen peas, 6 hard boiled eggs
- Top the pie with cauliflower mash. I like to evenly dollop the mash in top, then use a spatula to spread it out, followed by a fork to make it a little crispy on the raised parts.
- Sprinkle with parmesan cheese.25 g grated parmesan cheese
- Bake for 35 minutes until the top is golden.
- Optional: broil for 5 minutes at the end for an even crispier topping.
- Let the pie stand for 5 minutes. Dig in and enjoy!
Notes
- Poach the fish only until it flakes, 5 to 8 minutes. It finishes in the oven.
- Add the milk to the roux in stages, whisking, or it goes lumpy.
- Drain the cauliflower hard before blending. Wet mash will not crisp.
- Rake the mash with a fork, then broil for the crispiest top.
- Rest 5 minutes so slices hold together.
Storage
- Fridge: airtight, up to 4 days.
- Freezer: portion, cool, freeze up to 3 months. Thaw overnight before reheating.
- Reheat: microwave 2 to 3 minutes, or cover and warm at 180°C for 15 to 20 minutes. Splash of milk if thick.
