Djevojka Sofija živi mirnim životom u rodnom gradu i radi u trgovini šešira svoje majke. Vještica od Pustoši baci na nju uroke i pretvori je u staricu, protiv čega ona ništa ne može učiniti. Sad ne može više nastaviti posao sa šeširima i odlazi u neugledni pokretni dvorac ozloglašenoga čarobnjaka Vihora u kojemu se zaposli kao kućna pomoćnica. Sprijatelji se s Kalciferom, demonom vatre koji vodi dvorac i koji je neraskidivim ugovorom vezan uz gospodara. Sofija i demon se dogovore da će si međusobno pomoći i skinuti uroke. Poput Kalcifera, vještica je urekla i Vihora, a Sofija će se zaljubiti u njega. Ona će mu pomoći da se suoči s Vješticom Pustoši i njegovom bivšom profesoricom magije...

Sindikat pokušava kupiti cijelu četvrt kako bi izgradili novi centar. Uspjeli su kupiti sve kuće osim male teretane gdje se Mr.Austrija, Joe Santo (Schwarzenegger) priprema za natjecanje za Mr.Univerzum, koje je za mjesec dana. Craig Blake (Jeff Bridges) je bogatun kojeg iz sindikata šalju u teretanu kako bi uspio dogovoriti prodaju. No on se sprijatelji s ljudima u teretani i zaljubi u Santovu prijateljicu Mary Tate (Sally Fields).