Poach the Fish: In a large saucepan, combine the smoked and fresh fish with the milk, quartered onion, and cloves (if using). Bring to a gentle simmer over medium heat, cooking for about 5–7 minutes until the fish is just cooked through. Remove the fish with a slotted spoon, set aside, and discard the onion and cloves.
Prepare the White Sauce: In a separate pot, melt the butter over medium heat. Add the minced garlic, chopped onion, carrot, and celery, sautéing for 5 minutes until the vegetables are softened. Stir in the flour, cooking for another minute to form a roux. Gradually add the reserved poaching milk while whisking continuously to avoid lumps. Let the sauce simmer for 5–7 minutes, thickening as it cooks.
Make the Mashed Potato Topping: Boil the peeled and chopped potatoes in a large pot of salted water for about 15 minutes or until tender. Add the butter and milk, mashing until smooth and creamy.
Assemble the Fish Pie: Preheat your oven to 375°F (190°C). In a baking dish, layer the poached fish chunks evenly along with the frozen peas. Pour the white sauce over the fish and peas, gently mixing to combine. Add the quartered hard-boiled eggs on top (if using), then spread the mashed potatoes over the filling in an even layer. Use a fork to create texture on the potato topping.
Top and Bake: Brush the melted butter over the mashed potatoes and sprinkle with Parmesan cheese if desired. Bake in the preheated oven for 25–30 minutes or until the potato topping is golden and slightly crisp.
Garnish and Serve: Sprinkle with finely chopped parsley for garnish and serve warm. Enjoy the creamy, savory flavors of this classic fish pie.