Troubu si předehřejeme na 190 °C.
Na pánev vložíme rybu a zalijeme sójovým mlékem. Vaříme rybu asi 5 minut, musí zůstat nedodělaná. Vyndáme rybu z pánve a vložíme ji na talíř. Odstraníme z ní kůži a pokrájíme ji na větší kusy, které naskládáme do olejem vymazaného pekáčku.
Oloupeme cibuli a nakrájíme nadrobno. Vsypeme cibuli do sójového mléka na pánvi, kde se vařila ryba, a přidáme bobkový list. Přivedeme k varu, odstavíme a necháme 10 minut chladnout. Pak scedíme.
V pánvi si připravíme jíšku. Zahřejeme 45 g margarínu bez laktózy a přidáme mouku. Vaříme 1 minutu a pak zalijeme přecezeným sójovým mlékem. Sójové mléko přidáváme postupně, aby nevznikly hrudky. Jakmile jsme přidali všechno sójové mléko, přivedeme bešamel k varu a 2 minuty vaříme za neustálého míchání. Pak odstavíme.
Mezitím si oškrábeme brambory, pokrájíme je na čtvrtky a 15 minut vaříme, aby změkly. Pokrájíme je na kostičky a rozmačkáme s máslem a sójovou smetanou. Osolíme a opepříme.
K rybě v pekáčku přidáme vařené krevety, kapary a nadrobno nasekanou petrželku. Osolíme, opepříme a zalijeme bešamelem. Navrstvíme brambory a nakypříme je vidličkou, aby zůstaly po upečení křupavé. Zasypeme brambory rozdrobeným sýrem tofu a pečeme 45 minut. Podáváme teplé.