Balthazar Blake (Nicolas Cage) je čarodějným mistrem, který se v současném Manhattanu snaží ubránit město před svým úhlavním nepřítelem Maximem Horvathem (Alfred Molina). Balthazar na to ale sám nestačí a proto vyhledá pomoc Davea Stutlera (Jay Baruchel), zdánlivě obyčejného člověka, který v sobě ale ukrývá netušené možnosti, a učiní z něj navzdory jeho pochybám svého učně. Čaroděj svého nedobrovolného žáka v rychlosti zasvětí do základů tajného umění magie a kouzel a společně se tato neobvyklá dvojice pokouší s pomocí svých schopností postavit jedněm z nejagresivnějších – a nejzákeřnějších – čarodějů všech dob. Dave je nucen v sobě najít veškerou odvahu k tomu, aby jako Čarodějův učeň svůj výcvik přežil, zachránil město a získal srdce své vyvolené.
Balthazar Blake je Merlinovým žákem a je to čaroděj. Je starý přes 1000 let a po celou tu dobu pátrá po Merlinově potomkovi, který bude dědicem jeho mocných schopností. Když ho konečně najde v desetiletém Davovi Stutlerovi, zjistí, že jeho vyvolený učeň o svou novou kariéru příliš nestojí.
Maxim Horvath byl, společně s Balthazarem Blakem a Veronicou, Merlinovým žákem a mocností na straně dobra. Ale společná láska k Veronice(Monica Bellucci) oba Merlinovy žáky rozdělila a z Horvatha se nakonec stal spojenec zlé Morgany, která Merlina zabila a snaží se s pomocí svých služebníků ovládnout svět. Horvath s Balthazarem bojují už celá staletí, až se nakonec ocitnou v současném New Yorku.