Balthazar Blake (
Nicolas Cage), um "Merliniano", é um feiticeiro, na moderna
Manhattan, lutando contra as forças do mal, em particular, seu inimigo, Maxim Horvath (
Alfred Molina), durante a busca para a pessoa que irá herdar os poderes de Merlin. Este acaba por ser Dave Stutler (
Jay Baruchel), um estudante de física, a quem Balthazar toma como um protegido relutante. O feiticeiro dá a seu aprendiz relutante um curso intensivo na arte da ciência, magia e feitiçaria, a fim de parar Horvath e Morgana Le Fay (
Alice Krige) de elevar as almas dos mortos feiticeiros do mal ("Morganianos") e destruir o mundo.