Balthazar Blake (Nicolas Cage) é um feiticeiro que mora em Manhattan. Ele busca defender a cidade de seu arquinimigo, Maxim Horvarth (Alfred Molina), mas não é capaz de cumprir esta tarefa sozinho. Para tanto ele recruta Dave Stutler (Jay Baruchel), um rapaz comum mas com um potencial oculto, para ser seu aprendiz. Balthazar passa então a ministrar um rápido curso na arte e ciência da magia, de forma a torná-lo seu aliado na luta constante contra as forças de Horvarth.