Three weeks following the events of 'A World Without Princes', both schools have fallen under the rule of the returned School Master, with the original School for Evil becoming the 'School for Old Evil' and the School for Good becoming the 'School for New Evil'. Still, the change is all but complete as the School Master, named Rafal, still has to 'marry' Sophie and ultimately start his campaign to destroy Good. Though hesitating, but afraid she might be forever alone and taking into account Agatha and Tedros' "betrayals" for ignoring her pleas for help, Sophie accepts the proposal and becomes a teacher for the School for New Evil, but the Storian still doesn't accept this as a 'happy ending'. This starts a countdown in which the sun grows weaker each passing day, and when the final dusk settles, it'll mean the end of all the fairytale world.
Meanwhile, Agatha and Tedros, back in Gavaldon, attempt to remain in hiding and reconcile, but are forced to escape when the people of Gavaldon tries executing them both for all the miseries she and Sophie previously caused. Agatha's mother Callis sacrifices herself to buy time for both to escape to the Endless Woods. Arriving there, they're rescued by Professor Uma, whom explains that Rafal's return has allowed the return of old villains as undead and that the remaining original heroes (Mainly Cinderella, Peter Pan, Hansel and Gretel and Pinocchio) are formed in a League of Thirteen, led by Merlin to survive against the Rafal's assaults, clearly seeking to alter the original fairytales, starting with the murder of Snow White and the Seven Dwarfs, Rapunzel and Tom Thumb. So much the League as Agatha and Tedros are in constant disagreement.
Agatha and Tedros, despite a rocky beginning, eventually are assigned by Merlin to destroy Rafal's wedding ring, which keeps so much his sustenance as his 'empire' alive, but under the strict condition that Sophie must be the one to deliver the killing blow, that can only be performed with the Excalibur that Tedros lost in the day of Rafal's return. They realize the Excalibur is being guarded in the School for Old Evil, and thus Agatha sets to recover the sword while Tedros, on Agatha's insistence, sets out to 'rescue' Sophie and try to convince her to give up her marriage with Rafal. Aided by Sophie's former friends Hester, Anadil, Dot and Hort, they manage to infiltrate the School (Using the same gender-swapping potion that allowed Sophie to turn into Filip, previously) and perform both tasks as they then run away, with Rafal mysteriously allowing them to escape.
Merlin guides Agatha, Sophie and Tedros to Avalon, where Tedros discovers Guinevere and Lancelot still alive. Despite his initial grudges against both, he slow and painfully comes to forgive them as he learns further of Arthur's previous paranoic behavior and domineering issues. Agatha, on her part, becomes willing to give up her love for Tedros so Sophie can have him, instead, more driven by her reluctance in becoming the future Queen of Camelot than by her personal feelings. Despite both's best efforts, however, the plan ultimately fails when Sophie and Tedros kiss, and both realize they were never meant for each other. Believing she was used all along, she returns to Rafal, accepting her place by his side and becoming the Queen of Evil. Against her wills, Agatha is chosen as the Queen of Good, as both parties prepare for war, whose final battle is to take place in Gavaldon, still untouched because of an energy barrier fed by people's beliefs in fairytales, but that's weakning due to Rafal's altered stories, and is being targeted for reasons unknown. During training, Agatha also learns of Cinderella's tragic past, as she was forced into a fairytale she never asked to have, and how this alienated her to the stepsisters which were her friends, in spite of Cinderella's stepmother.
The battle takes place in the Stymph Woods close to Gavaldon, which Merlin manages to sway all the School's students against Rafal and Sophie with Lady Lesso's aid, having been revealed as the traitor trying to undermine Evil's efforts. Sophie, with Agatha in hot pursuit, tracks Lady Lesso down to the School for Old Evil, whom discloses her that Evil was never meant to destroy Good or vice-versa, but instead become a harmonic part of it. She and Agatha also discover the corpse of Sophie's mother Vanessa and the tale behind both her and Callis, in which Sophie and Agatha discover to be twin sisters, explaining the inseperable bond between them. Still, while Agatha sees this as a chance to heal wounds, Sophie remains still, determined to keep her union with Rafal by any means.
The battle ultimately shifts in Evil's favor as Cinderella falls in combat and the barrier protecting Gavaldon fails, allowing Rafal to invade. However, instead of destroying the town, he takes Sophie's father's Stefan for execution by Sophie's own hands, as a 'final sacrifice for love' and Evil's ultimate victory. In a last, desperate effort, Agatha reminds Sophie of her friendship, making her realize she already had a happy ending of her own, and was risking destroying it. Sophie has a change of heart at the last second and deceives Rafal, destroying his wedding ring and ultimately killing him, saving everyone at the nick of time. Full of regret, Sophie, Agatha and Stefan make amends, with Sophie finally letting Stefan have a family of his own, as she and Agatha pull back to the Endless Woods. There, they also give their farewell to Lady Lesso in her dying breath, fatally stabbed by her former son Aric, killed in action.
Lesso and Cinderella are promptly buried and everything seems to return to normal, with Tedros, Agatha and Sophie meaning to head together to Camelot, when Sophie discovers she was chosen by Lady Lesso to be her successor as Dean for the School of Evil. Agatha and Tedros depart alone to Camelot, with Sophie fully embracing her newfound role, free, satisfied and content with herself, despite feeling a bit jealous but still remarking "I am me".