在童年时代便消灭了糖果屋女巫的孤儿兄妹韩赛尔(杰瑞米·雷纳JeremyRenner饰)与格蕾特(杰玛·阿特登GemmaArterton饰),多年来成为邪恶女巫的最大克星。在帮助小镇奥古斯伯格寻找失踪的孩子以及隐藏女巫之时,兄妹二人发现三天后即将出现“血月”(月蚀),这对女巫们来说是无比重要和神圣的时刻。两兄妹迅速投入行动,而讨厌他们俩的警长也招来一伙人马追查女巫们的行踪。未过多久,女巫头目(法米克·詹森FamkeJanssen饰)率领手下袭击小镇,与兄妹二人展开正面冲突。激战过后,格蕾特遭到重创,韩赛尔也随着女巫消失下落不明。正邪的较量渐次升级,兄妹俩在这一过程中也渐渐知晓关于他们童年以及父母背后的秘密……正如经典童话故事中一样,汉塞尔和格蕾特被父亲遗弃在森林里,他们进入姜饼屋,被食人 女巫抓获。她强迫汉塞尔不断地吃甜食,让他发胖,并奴役了格蕾特。兄弟姐妹智胜了她,将她扔进烤箱焚烧。在接下来的十五年里,汉塞尔和格蕾特成为著名的猎巫人,杀死了数百名猎巫人。不知何故,两人对咒语和诅咒免疫,但姜饼屋的事件让汉塞尔患上了魔法引起的糖尿病,每隔几个小时需要注射一次胰岛素,否则他就会死。[N1]现在,汉塞尔和格蕾特成年了,他们抵达奥格斯堡镇,阻止贝林格警长以巫术罪处决美丽的年轻女子米娜。恩格曼市长雇佣了这对兄弟姐妹来营救镇上失踪的孩子,这些孩子被认为是被女巫绑架的。贝林格雇佣追踪者执行同样的任务,希望羞辱市长并巩固他的权力。汉塞尔和格蕾特抓住了长角女巫,发现女巫们正在为即将到来的血月做准备,她们计划牺牲十二个孩子来获得对火的免疫力,这是她们最大的弱点。市长指派当地居民兼追踪者杰克逊协助他们在森林中航行,但他们等到早上才出发。伟大的黑暗女巫穆里尔带着她的军队袭击了城镇并绑架了第12个孩子。她袭击了格蕾特,格蕾特被本救了,本是当地的一名青少年,也是他们的狂热粉丝,计划自己成为一名猎巫人;杰克逊在试图协助格蕾特后在战斗中被穆里尔杀死。汉塞尔从女巫的扫帚上摔下来,在森林里迷路了。第二天早上,米娜发现他被困在一棵树上,并把他带到附近的一处泉水,在那里她治愈了他的伤口,他们在泉水的治愈水中做爱。格蕾特遭到贝林格和他的追随者的攻击,他们殴打了她,然后被穆里尔的巨魔爱德华阻止。他杀死了所有的男人,并告诉格蕾特,他帮助了她,因为巨魔为女巫服务。汉塞尔和格蕾特发现了一个废弃的小屋,他们得知这是女巫的巢穴,也是他们童年的家。穆里尔告诉他们过去的真相。汉塞尔和格蕾特的母亲是大白女巫阿德里安娜,嫁给了一位农民。在汉塞尔和格蕾特的父亲将他们送进树林之前,她对他们施展了抵御黑魔法的保护咒。在最后一个血月之夜,穆里尔计划使用大白女巫的心脏来完成她的魔药。由于阿德里安娜的白魔法比穆里尔的黑魔法更强大,穆里尔决定改用格蕾特的心脏。为了摆脱阿德里安娜,她向镇民透露她是女巫。愤怒的暴民将她活活烧死,并绞死了汉塞尔和格蕾特的父亲,后者将他们留在森林里以保护他们。由于阿德里安娜是一名白女巫,她无法对人类使用魔法,即使是为了自卫。兄弟姐妹与穆里尔战斗,然后穆里尔刺伤了汉塞尔并绑架了格蕾特,以完成她期待已久的仪式。汉塞尔和米娜一起醒来,米娜发现自己是一名白女巫。她再次治愈了他,并使用了属于阿德里安娜的 魔法书来祝福他的武器库。汉塞尔、米娜和本扰乱了血月安息日。米娜用加特林机枪屠杀了黑暗女巫,而汉塞尔则释放了孩子们。爱德华反抗穆里尔并在格蕾特将他扔下悬崖之前释放了他。汉塞尔、本和米娜沿着穆里尔的踪迹来到了原来的姜饼屋,但现在已经腐烂了。穆里尔在汉塞尔开枪射杀米娜之前杀死了米娜。兄弟姐妹与她进行了一场残酷的战斗,最后他们用铲子将她斩首。他们将穆里尔的尸体放在柴堆上焚烧,并领取拯救孩子们的奖励。最后,他们在本和爱德华的陪同下出发进行下一次政治迫害。