Coza o bacalhau em água a ferver. Quando estiver cozido retire-o e deixe arrefecer. Guarde 250ml da água para o molho. Depois elimine as peles e as espinhas e separe em lascas. Reserve.
Descasque e corte as batatas em cubos pequenos. Coloque as batatas em água com sal e leve ao lume. Aguarde até que ferva e deixe cozer por mais 5 minutos. Retire do lume, escorra, tempere com pimenta e reserve. (Utilize batatas que não se desfaçam facilmente)
Corte as cebolas às rodelas, pique os alhos e coloque-os numa frigideira anti-aderente. Junte o azeite, a cenoura ralada e uma folha de louro. Leve ao lume para refogar. Quando a cebola estiver translúcida, junte o bacalhau e deixe cozinhar durante alguns minutos. Retire o louro e reserve.
Coloque a farinha e a margarina num fervedor de leite e leve a lume brando. Mexa rapidamente com uma colher de pau para não ganhar caroços. Junte o leite e a água de cozer o bacalhau aos poucos e continue a mexer até obter um creme grosso e bem cozido. Se, por acaso, o molho formar caroços, utilize a varinha mágica para os desfazer.
Junte as natas e tempere com sal, pimenta, noz-moscada e sumo de limão a gosto.
Num tabuleiro, junte as batatas, o bacalhau e o molho. Envolva bem e leve ao forno durante cerca de 20 minutos ou até estar dourado por cima.