朗普想用龍蛋喚醒藍仙子,沒有奏效。他失望而生氣。因為他太急于打敗黑仙子,黑仙子拿走了兒子吉迪恩的心,吉迪恩只能受制于她作惡。他不想失去兒子。好在藍仙子很快蘇醒,正要告訴他們,那半根魔杖的就在童話鎮的中心。她的話沒有說完,白雪制止了她現了原形,原來她是黑仙子,她帶走了藍仙子。
朗普強行將吉迪恩留下并綁在椅子上。他想幫吉迪恩拿回心臟。吉迪恩認為不太可能。他不敢再反抗黑仙子了,以前他的反抗都失敗了,只是讓他更痛苦。朗普使用了夢神之沙,帶著艾瑪和吉迪恩,來到了暢談之地。
在這兒,朗普得知了黑仙子當年拋棄自己的的秘密。當年黑仙子生下朗普時,老虎莉莉和藍仙子同時光臨,她們告訴黑仙子,她生下的是個擁有光魔法的未來救世主。從莉莉帶來的書里,黑仙子得知將有一個孩子殺掉她的孩子,這使她很緊張,為此她讀遍了所有莉莉帶給她的書,并讓自己變成了仙子,然后到處尋找那個自己兒子的天然敵人,卻沒有找到。
后來,黑仙子說服了莉莉,將她帶到仙子密室。她想將倆個古老咒語結合產生了一個新的強大咒語,從而保護自己的兒子不死。在密室里,莉莉發現黑仙子找到的那個咒語其實是個詛咒,那會將所有孩子送往另一個沒有魔法的國度,讓他們骨肉分離。莉莉試圖阻止黑仙子。但為了保護兒子,黑仙子豁出去了,她挖出了莉莉的心臟,為了保護兒子的黑仙子,這時終于變身成那個注定要毀掉兒子的極惡之人。
看到了這一切的艾瑪、朗普和吉迪恩,突然明白了,最后一戰中和黑仙子較量的,其實不是艾瑪,而是朗普。
塞琳娜對失去魔法后的生活很不適應,為了幫她,瑞金娜想讓她去紐約,帶著塞琳娜的女兒羅賓和瑞金娜艾瑪的兒子亨利,因為在最后一戰到來后,恐怕紐約才是能讓她放心的最安全之地。塞琳娜為瑞金娜對她的信任感動。
白雪受到瑞金娜的啟示,已經知道那半根魔杖是在童話鎮的中心外婆家。于是她們火速趕往那里,終于找到了那半根魔杖。這時,黑仙子也趕到了,瑞金娜和塞金娜聯手戰勝了黑仙子。
朗普帶著那根修好了的魔杖,找到黑仙子決戰。他以為當年黑仙子拋棄他,是擔心注定被他殺死的命運。黑仙子說那不是終極真相。當初,她正要捏碎莉莉的心臟,藍仙子出現了,拿回了莉莉的心臟。
黑仙子用魔法剪掉了兒子注定成為英雄注定死亡的命運,她不肯舍棄自己的力量,她說要用自己的力量保護兒子不死。藍仙子將黑仙子驅逐到了空虛之地,造成了他們母子分離。
朗普相信了她。他回來后告訴大家,他已將黑仙子永遠驅逐,一切都回到了從前。大家非常高興,艾瑪和亞歷山德拉準備明天舉行他們的婚禮了。事實上,黑仙子準備在艾瑪的婚禮上,給這個救世主最后一擊。
艾瑪今晚就要結婚了,她決定穿母親白雪結婚時穿的婚紗,這很有意義。當艾瑪試婚紗時,白色的婚紗突然變成了黑色。黑仙子出現了,告訴大家她和艾瑪之間必有最后一戰。黑仙子已在鐘樓布滿了黑仙塵,等六點一到,這些黑仙塵就會散發到童話鎮各處去。將大家與艾瑪隔開,讓艾瑪獨自一人與她進行最后一戰。瑞金娜和白雪急忙設法要幫助艾瑪。
艾瑪找到亞歷山德拉,告訴了他這件事。想在最后一戰前見見自己的愛人。亞歷山德拉發誓要幫她。他找到黑暗者朗普,襲擊了他。這時,黑仙子現身了。
亨利告訴艾瑪,她來到童話鎮的原因就是為了最后一戰。亨利相信白雪能贏。白雪去找黑仙子,但黑仙子成功地讓她回想起自己身為一個小女孩時的孤獨感,她未戰而逃。亨利告訴她家人即使被黑仙子凍住與她隔開,也永遠在她身后。
在另一個王國,白雪為打敗巫后,曾對著流星許下了個愿望,就是用愛的歌聲來實現。果然,她這個愿望實現了一部分。整個王國的人,包括巫后,在表達想法的時候只能用歌聲。這使倆人在面對巫后時取得了勝利,白馬成功地用劍抵在了巫后的喉嚨,但很快巫后用魔法破除了他們的歌聲。藍仙子出現了,告訴他倆歌聲的力量并沒有消失,將來他們的女兒艾瑪可以用它取勝。
艾瑪又去找黑仙子決戰,黑仙子挖出了她的心。但是艾瑪并沒有死去,黑仙子也大為驚異。這時,亨利來了告訴艾瑪歌聲的事。艾瑪用歌聲喚醒了被凍住的白雪白馬等家人們。現在,艾瑪不再孤獨了。但黑仙子告訴她,最后一戰依然會來,而且將更加慘烈。
童話鎮的人都到了,慶賀艾瑪和亞歷山德拉的婚禮。倆人說了誓言交換了婚戒,大家載歌載舞正在歡慶時,六點的鐘聲響了,黑仙塵釋放出來,布滿了童話鎮,籠罩了每一個人。
黑色仙塵的迷霧過后,亨利醒來,發現自己正獨自身處一間屋頂上。走入街道里,發現蟋蟀醫生迎面過來,連忙向他打聽黑仙子的事。蟋蟀卻認為這是很早以前的事了。
亨利好容易在精神病院里找到了艾瑪。艾瑪還認得亨利,母子倆擁抱在一起。但當亨利打聽其它家人們,白雪白馬、亞歷山德拉等人的下落時,艾瑪卻制止了他。告訴他,她不想再讓這些事破壞自己的康復進程了。
那些人都不是真的,沒有詛咒,也沒有童話鎮,這兒只是個普通的小鎮。她當初不該信了亨利的那些書,才進入了這家瘋人院。亨利試圖對她提起最后一戰的事,并拿出了那本神奇的書提醒她。但艾瑪不相信。亨利知道艾瑪中了黑仙子的詛咒。
這時,黑仙子走到他們身旁,以鎮長和亨利母親的身份。黑仙子讓艾瑪叫她的本名菲奧娜。她奪走了亨利的書。亨利離走前,偷偷交代艾瑪,無論菲奧娜讓她做什么,都不要聽。
白馬白雪、亞歷山德拉和瑞金娜在魔法森林的宮殿中醒來。他們都意識到這是黑仙子的魔法,拆散了艾瑪、亨利和他們大家。大家發誓要找回艾瑪和亨利,黑仙子的詛咒也無法阻擋。
黑仙子和蟋蟀醫生一起將艾瑪送回病房。黑仙子觀察到艾瑪非常聽話地服藥,告訴她再過段時間,她就可以出院,甚至回到波士頓那間公寓房去。可亨利還沒放棄那些童話的想法,為了徹底斷絕他的妄想,菲奧娜讓艾瑪燒掉亨利那本神奇的書,這樣也能證明艾瑪徹底接受了現實。
艾瑪不肯,因為她知道這本書對于亨利來說很重要。菲奧娜將書交給了蟋蟀收藏,告訴艾瑪,除非她燒毀了這本書,表示她和幻想世界徹底告別,否則她將一直被關在瘋人院。
通過瑞金娜的魔鏡,白雪白馬瑞金娜他們都看到了這一幕。他們也突然意識到,原來說的最后一戰,跟原來設想的并不相同。這最后一戰看來是發生在瘋人院里,是一場靈魂之戰,信仰之戰,希望之戰。
想到如果艾瑪不再相信什么了,還如何進行最后一戰,大家有點愁容,這時,塞琳娜來了,拿著一頂瘋帽匠的帽子,帽子里面是通往各個國度的傳送門。
塞琳娜告訴大家,隨著救世主艾瑪的信仰崩潰,所有的故事王國都在坍塌。瑞金娜通過帽子的傳送門將大家帶到了她的國度。她要在這兒制造新的魔法,好擊敗黑仙子。亞歷山德拉認為有關更好的辦法,他獨自離開了。
黑仙子來到朗普的店里。朗普和吉迪恩都在,貝兒卻消失了。黑仙子讓他們為她修腕表,同時為他們帶來了午餐表示安慰。盡管朗普不知道當時貝兒去了商店就再也沒能回來的原因,但他堅信著貝兒是愛他和兒子吉迪恩的。他拿出了貝兒愛看的一本書要交給吉迪恩,但吉迪恩對此并不是很在意。他的感覺中,菲奧娜更像個媽媽。他認為母親拋棄了自己。
亨利偷到了蟋蟀錢包里的鑰匙,打開艾瑪的牢門要帶她出去。
亞歷山德拉找到了長著魔豆的鉆天豆莖,他要順著它回去找艾瑪。白馬發現了,也要跟著他一起行動。
亨利帶著艾瑪來到了屋頂,這是他們最后分別的地方,也是艾瑪和亞歷山舉辦婚禮的地方。他認為艾瑪在這個地方也許能喚回記憶。盡管艾瑪想起了些什么,但她有點對自己的記憶力不太信任了。她一心要回波士頓躲一躲靜一靜。
亨利答應幫忙。他讓艾瑪先等他一下。他趕去蟋蟀住處,找到了他的那本書正要帶走,這時,菲奧娜來了。她讓亨利摔下樓梯摔斷了手臂。
艾瑪到醫院去看望亨利。菲奧娜在旁邊故意說亨利是因為不肯放棄他的幻想導致出了問題,并說下次說不定會摔斷脖子。艾瑪不相信亨利說的真相,這是菲奧娜使用魔法導致他被摔傷的,她堅稱這個現實世界沒有魔法。
亞歷山德拉和白馬拿到了魔豆,卻驚醒了巨人國的翼龍。翼龍噴著火舌追蹤著他們。
為了亨利,在菲奧娜的誘逼下,艾瑪將亨利的那本書扔進了熊熊的爐火中。