Preheat the oven to 200 degrees C. Lightly grease a 20x30cm baking dish.
Place potatoes into a pot with enough water to cover. Bring to a boil and cook until tender, about 10 minutes. Drain and mash with milk and butter until smooth.
Heat oil in a large frypan over medium heat. Fry onion and carrots in the oil until starting to soften. Season with salt, pepper and chilli powder. Stir in the cream and parsley and remove from the heat.
Place fish in an even layer in the bottom of the prepared baking dish. Pour the cream and vegetable mixture over the fish, then cover with a layer of mashed potatoes. Sprinkle grated cheese over the top.
Bake for 40 minutes in the preheated oven, or until piping hot throughout.