Plot
Twin brothers Rhian and Rafal founded the School for Good and Evil to train fairy tale heroes (called "Evers") and villains (called "Nevers") respectively. Dissatisfied with evil's constant submission to good, Rafal attacked Rhian using blood magic. They both seemingly fell off a cliff.
Years later, in a village called Gavaldon, best friends Sophie and Agatha learn about the legendary school from the local bookshop owner. While Agatha is skeptical, the fairy tale-obsessed Sophie dreams of escaping ordinary life and becoming a princess. Nights later, Sophie attempts to run away from Gavaldon in secret. When Agatha finds out and tries to intervene, a giant stymph snatches them both, flying them to the magical School for Good and Evil. To their dismay, however, Agatha is dropped at the School for Good, while Sophie is delivered to the School for Evil. Agatha protests, wishing to return to Gavaldon, while Sophie insists she belongs in Good.
Both girls seek out School Master Rhian and the magical Storian pen. He says he will only allow Sophie to switch schools if she can prove herself an Ever by attaining true love's kiss. She casts Prince Tedros, the son of King Arthur, as her true love and enlists Agatha's help.
Agatha and Sophie struggle in their respective classes and are ostracized by their peers. Though Agatha is vocally critical of Good's superficiality, Ever Dean Clarissa Dovey argues her sense of empathy makes her the first true princess in a long time. Meanwhile, Rafal manifests as a wasp swarm and defends Sophie from another student's attack. Never Dean Leonora Lesso interprets this as Sophie's unique potential for winning a victory for Evil, something thought impossible for centuries.
When Sophie tries to get close to Tedros, Lesso cuts her hair to break her spirit. Under Rafal's influence, Sophie undergoes a radical change in appearance and personality, gaining the favor of the Nevers and rising to the unofficial position of leader of Evil's student body. Though she diverges from Agatha, the latter still tries to aid Sophie by using magic to bring her and Tedros together. An Ever and a Never being together causes chaos; Rhian determines a "Trial by Tale" to settle the issue. During the Trial, Sophie ends up proving inept in defending herself and Tedros, prompting Agatha save him in her stead. This results in him rejecting Sophie for choosing self-preservation over him, with the prince starting a relationship with Agatha.
Convinced by Rafal that Agatha is her enemy, Sophie accepts his offer of blood magic. She incapacitates Dovey, Lesso, and the other school staff, and crashes the Evers' Ball, now physically transformed into a hag. Sophie threatens Agatha and goads Tedros into attacking the School for Evil. However, by attacking, the Evers break the law of "Good defends, Evil attacks", resulting in the Nevers and Evers magically switching appearances and a battle breaking out.
Sophie attempts to seek revenge on Rhian, who reveals himself to have been Rafal all along; he survived the fall and killed Rhian, assuming his identity and manipulating Good's stories to weaken it from within. He then proposes he and Sophie rule together, declaring her his true love. As they kiss, both Schools start collapsing, horrifying Sophie. When Agatha arrives, Rafal tries to stab her with the Storian, which he had forced to write the story it has written. Sophie pushes Agatha out of the way and takes the fatal hit; her sacrifice undoes both Rafal's spell and already written fate on Agatha, saving everyone. Agatha, with a dying Sophie and Tedros's help, kills Rafal with Excalibur. She then kisses the dying Sophie goodbye; this demonstration of true love revives her.
The Evers and Nevers reconcile, and the restored school staff decide to again unite the two schools into one. A portal to Gavaldon opens, and Agatha kisses Tedros before crossing over with Sophie, returning to their old lives. However, the two now use their powers to defend themselves from bullies. Unknown to them, a portal opens piercing the veil between worlds and an arrow flies through, with Tedros pleading he needs Agatha; the Storian then states that "this is only the beginning".