As Ash, Serena, Clemont, and Bonnie continue their journey to Cyllage City, they meet a young woman named Penelope who challenges Ash to a battle on the spot, right there in the forest! Penelope wants Ash to come with her if she beats him, which makes Serena a little nervous. Plus, Penelope’s partner for the battle is Sylveon, a Pokémon Ash hasn’t seen before. Ash is extra excited when Clemont tells him Sylveon is a Fairy-type Pokémon—a type Ash has never encountered!
Froakie does its best, but Sylveon easily defeats it with a devastating combo of Attract and Draining Kiss, leaving Froakie a little embarrassed and sulky for a while. Ash keeps his word, and all our heroes come along as Penelope leads them away...straight to her kindergarten class! Penelope explains that she and Sylveon explore the forest every day, looking for wild Pokémon to befriend so the children can meet them. This time, she’s brought our heroes and all their Pokémon instead! The kids are delighted, except for one boy named Randall, who’s afraid of Pokémon and determined to keep his distance.
Naturally, Team Rocket is lurking nearby, making plans to steal Pikachu—and Penelope’s Sylveon, too! They show up disguised as a traveling entertainment troupe and invite all the kids up on stage to play with them. When the kids are on the stage, Team Rocket sets off a series of smoke bombs. In the chaos, they swipe Pikachu and Sylveon and take off in their truck...but they don’t know Randall and Froakie are trapped there as well! Ash manages to hop onto the back of the truck as it drives away, and eventually gets inside. At first, he and Froakie work to break the cages holding Sylveon and Pikachu, but they’re too tough. When Randall sees how sad Sylveon is, he finally agrees to help, and with all three of them working together, the Pokémon are freed!
After they send the villains blasting off again, Ash and Randall return to the class, and Randall excitedly tells his classmates and teacher about his part in the rescue. The others are happy to see he’s gotten over his fear of Pokémon, and he even announces his plans to become a Pokémon Trainer when he gets older!
Somewhere in the forest, Ash has met the eye of a Trainer, who reminds him of the Trainer rule: they must now battle. Ash agrees, and the opposing Trainer introduces herself as Penelope, and releases her Pokémon, Sylveon. Ash has never seen the Pokémon before, and takes out his Pokédex to identify it as an evolution of Eevee. Clemont tells him that Sylveon is a Fairy type, which is news to Ash. Bonnie remarks that Dedenne is also the same type. Despite never having battled or previously known the type, Ash sends out Froakie to battle. Before battling, Penelope asks Ash to promise one thing: that if she wins the battle, Ash will have to stay with her a while; flustering Serena. Ash, confident in his abilities, agrees, and begins the battle with a Bubble. Sylveon counters with Fairy Wind, which sends Froakie crashing into a tree. Sylveon follows up with Moonblast, but Ash instructs Froakie to jump out of the way, causing the tree's fruits to fall. Froakie hits the falling fruit at Sylveon, who hits them out of the way with its feelers. Ash claims that the attack was a decoy, and Froakie leaps from above with Water Pulse, which briefly dazes Sylveon. Ash sends Froakie to finish it, but Penelope has one final weapon, Attract. Froakie falls immediately and deeply in love with Sylveon. Ash commands it to pull it together, but Froakie does not listen. Sylveon uses Draining Kiss and kisses the enamored Froakie on the cheek, draining its energy and sending it to the floor, fainted. Ash runs over to retrieve Froakie, and Penelope tosses him an Oran Berry to heal Froakie. She says that since she won, as promised, Ash will be with her for a while, making Serena even more shocked.
Penelope leads the group to a kindergarten, where the children rush to greet her and Sylveon, welcoming her back. Penelope tells Ash she is a teacher at the kindergarten, and the children ask her what Pokémon she brought with her today. The children notice Pikachu and crowd around him, and he escapes the mob up Ash's shoulders. The professor of the kindergarten joins the group and thanks the travelers for coming all the way out to the school. Penelope explains that she and Sylveon go out to the meadows every day and bring back the Pokémon they've befriended so the children can interact with Pokémon. Ash says that if that was the case, Penelope could have told him in the first place; and Serena puts her hand over her heart and breaths a sigh of relief. Meanwhile, Froakie is nursing a bruised ego away from the group when a kindergarten boy begins to approach him.
High up on a tree, Team Rocket watches the group through binoculars. Meowth is infatuated with Sylveon and falls from the tree, in love. James decides that this will be the day that Team Rocket gets Pikachu, and while they're at it, Sylveon too. Jessie agrees to start the operation right away.
Back at the kindergarten, the kids fawn over Ash's Pikachu, and the travelers in turn release all their Pokémon for the children to play with, much to the kids' excitement. In the halls, Ash sees a child running away, unbeknownst to them the same boy who approached Froakie. The professor identifies him as Randall, and goes to get him. Penelope explains that Randall actually loves Pokémon, but gets scared easily. As Ash and his friends show their Pokémon to the children, Sylveon offers Pokémon food to Froakie, who shakes its head and blushes, still embarrassed by its actions in battle. Ash tells it to cheer up. The professor returns with Randall in hand. Ash shows him Froakie, but Randall is scared to touch it or feed it, despite Ash and the group's reassurances. Hiding his face with his hat, Randall remembers a time when he was younger and first encountered Pokémon. Small Randall was watching a Hoppip under his back porch, when a Beedrill appeared behind him, scaring Hoppip and causing him to accidentally harm Randall, who watches, crying, as it hops away. Now, Randall explains he just wanted to be friends with the Pokémon. The group urges him not to worry about it too much, but Randall is still unconvinced.
Just then, a semi-truck backs into the yard. The side opens revealing a colorful set and two "performers", who bid the children to watch as they start to juggle. The children, including the travelers, rush excitedly to the truck, while Penelope and the professor remain behind, confused. The "performers" say that they are volunteers, here to give the children a wonderful time, and Ash says that he wants to try juggling, too. James, in a Beartic costume, comes out from the side of the truck and gives Ash permission to have a "beary good time." Ash, Randall, and the rest of the children walk up onto stage to play. Team Rocket passes out balls to the children while Randall sits down behind a set piece, Froakie is also unamused. As the children throw the balls in the air, smoke is released, obscuring the teachers' view. As the children scream, Ash tells them to exit the truck, which they do, as the smoke is thinning. As Ash checks that everyone made it down, alone on the stage with Sylveon and Pikachu, two nets come down and trap the two Pokémon, sending Ash flying offstage. The door to the set closes and Team Rocket shed their disguises from on top the truck. Ash demands they give the Pokémon back, but Team Rocket drives off at full speed. Ash runs after the truck, followed by Fletchling, and grabs onto the back just as the truck rounds a bend. At the kindergarten, the teachers realize that Randall is missing.
Noticing Fletchling in their mirror, James sends out mud from their exhaust pipe and hits Fletchling, sending it back. Inside, Randall and Froakie surprise each other and notice Pikachu and Sylveon, who are trapped in glass containers. Back at the kindergarten, Ash's friends realize that Randall is still on the truck. Accompanied by Penelope, they decide to go save them. Inside the truck again, Froakie tries to break the containers with Bubble and Water Pulse, but to no avail, while Randall looks on. Ash has managed to open the truck's back door and struggles into the truck, reassuring the Pokémon and Randall, promising to release them. Sooner down the road, Fletchling cleans off its feathers when Bonnie, Serena, Clemont, and Penelope drive up, asking what happened. On the truck's stage, Ash combines forces with Froakie to try and break Pikachu and Sylveon out of captivity. Together, they ram up against the containers repeatedly, but with little effect. Ash asks Randall to help, but he is reluctant and self-doubting. Ash convinces him by saying that he need Randall's help to save everyone, and together the three break Sylveon free, who thanks Randall with its feelers. Pikachu is also released, and at last Randall feels comfortable with Pokémon.
The truck is parked inside a warehouse, and Team Rocket emerges, eager to report their success right away. However, their laughter stops abruptly when the truck door lifts open to reveal Ash, Randall, and the released Pokémon. Jessie and James send out Pumpkaboo and Inkay, and command them to use Shadow Ball and Psybeam, respectively. Sylveon protects Randall as Ash sends Froakie with a Water Pulse and Pikachu with a Thunderbolt, which collide mid-air with Team Rocket's attacks. In the smoke that ensues, Ash commands Pikachu to use Electro Ball, sending Team Rocket blasting off again. Fletchling and Penelope's car come into the warehouse to see that everyone is safe and well.
Back at the kindergarten, Randall tells the story of how he saved Pikachu and Sylveon, and asks Froakie if they are friends. Ash assures them they are and that he is Randall's friend too, and Froakie and Randall fist bump, Randall not scared any longer. Later, as Ash and his companions say goodbye, Randall says that he too wants to be a Pokémon Trainer when he gets older, and Ash promises that the next time he sees him, they'll battle. The class waves goodbye as the four travelers disappear into the distance.