Rustboro City at last! Now that Ash and friends have arrived in Rustboro City, they're taking a moment to sightsee. They bump into a schoolteacher, Roxanne, and her class on a class trip. The kids are about Max's age and one of them, Kenny, is afraid of Pokémon. Roxanne invites the gang back to see the Pokémon Trainer's School. Ash is anxious to get to his gym battle, but Roxanne persuades him to wait. As it turns out, Ash would have had to wait anyway. Roxanne is the gym leader, too! The Pokémon Trainer's School is pretty big and has all kinds of different classes. May is especially interested in a class on Pokémon Contests. Max decides to attend the beginners' class that Kenny is in. He's in the middle of battling the class show-off, Tommy, when the principal comes running in to tell them that the school's Poké Balls have all been stolen. Team Rocket strikes again! Kenny steps in and saves the day by telling Max which attacks will work best, and Tommy cooperates, too. When they work together, the kids are able to defeat Team Rocket and save the Poké Balls. Just to be safe, Roxanne's Geodude sends Team Rocket blasting off again. Now that Ash has seen Roxanne and her Geodude in action, he's really ready for his gym battle!
Ash and his friends arrive at Rustboro City, where they do some sightseeing. At a local tower, Ash becomes overly enthusiastic about the souvenirs, embarrassing everyone else. As Ash tries to apologize, Max notices a Poliwag cowering under a bench. When they manage to get Poliwag to warm up to them, they notice a strange arm-band on the end of its tail. Soon, they are met by a local teacher named Roxanne, who has arrived with her Beginners' Class, a group of students Max's age, on a field trip. The Poliwag had belonged to a class member named Kenny, who is afraid of touching Pokémon. Ash and friends are invited to their school, the Pokémon Trainers' School, which is also convenient as it is next door to the Rustboro City Gym, where Ash and May will participate in their first Gym Battles.
At the Trainer's School, the headmaster takes them through the academy, including a Pokémon Contest class that piques May's interest, a Doctor's class taught jointly by a teacher and a Nurse Joy, as well as a battling class that draws Ash's interest. When they enter Roxanne's class, they are greeted by Professor Oak, in the middle of a lecture by videophone. Max is immediately rendered speechless at seeing his idol for the first time, while Ash, Brock, and May take the time to greet Professor Oak. When Professor Oak asks about whether he or Roxanne had won the Gym Battle, Ash learns that Roxanne is also the Rustboro Gym's Leader. As the headmaster explains, Roxanne is herself an alumnus of the Trainer's School, and quickly earned the title due to her prodigy skills. Roxanne, due to having to teach the Beginner's Class, asks Ash to delay their battle for two days, for which Ash accepts.
Meanwhile, Max is quizzed by a jealous student named Tommy on what attacks would work against Flying-type Pokémon (Max answers Thunderbolt and Thunder) and those that use Dig (Max answers Earthquake and Magnitude), quickly frustrating him. Continuing on with their tour, they are led to a room where the Academy's Poké Balls are kept and rented out to students. Outside the academy, Team Rocket manages to overhear, and plot to steal the Poké Balls. Ash and company are invited to partake in classes the next day. That night, Pikachu and Ash work on perfecting Iron Tail by slicing through small rocks (for which one manages to hit Pikachu on the head after it was successful).
The next day at the academy, Max is introduced to Anita, another Beginner Class student. As he learns, neither Anita nor Kenny is into Pokémon, and that their parents make them attend. Meanwhile, Tommy enters to try to bully Max once again. Anita quickly takes a liking to Max due to him having frustrating Tommy by being able to answer all of his questions. Later, after class has started, the kids are interacting with the Academy's Pokémon. Interested in becoming a Pokémon Coordinator, May sneaks off for the Pokémon Contest class, only to leave when they have a pop quiz. Meanwhile, Roxanne asks Ash (who she introduces as an elite Trainer) and Brock (who she introduces as the former Gym Leader of the world's premier Rock-type Gym) to be her guest speakers, while allowing the students a chance to interact with their own Pokémon. The children are particularly entertained by Lotad's antics, as its delayed response to a Water Gun order manages to splash Brock in the face. Ash tries to help Kenny to overcome his fear of touching Pokémon by trying to persuade him to pet Pikachu. However, Tommy having "accidentally" stepped on Poliwag's tail sparks another fight between him and Max.
Later on, during the Beginner's Class battle practice, Tommy and Max square off. Roxanne offers six Poké Balls for a one-on-one battle between the two. When the battle begins, Tommy has Magby while Max has Poliwag, putting Max with the type advantage. As Max is contemplating his battle options (including leading off with Water Gun), Tommy begins with a Flamethrower, which Max counters with Defense Curl. When Tommy tries again, Max uses Belly Drum. With increased Attack and Defense power, Max chooses not to go forward and attack, and on Tommy's next attempt with Flamethrower, it is replied with another Defense Curl - however, repeated hits is taking its toll on Poliwag. Before Tommy can finish, a school alarm bell sounds, and the headmaster appears to tell everyone that the Poké Balls have been stolen. A giant Wurmple robot, piloted by Team Rocket, appears, with a bag of Poké Balls on its tail. Ash attempts to take back the Poké Balls by Thunderbolting Team Rocket fails, due to the attacks hitting a screen. Brock's contribution with Forretress' Tackle is countered by Seviper's Poison Tail, while May's attempt with Wurmple's String Shot is met with Cacnea's Pin Missile.
Max wants to join in with Poliwag, but is held back by a shy Kenny, who insists on Max to use an actual attack. Taking the advice, Poliwag's Water Gun hits Seviper. Tommy, not willing to let Max take the glory, orders Magby to attack as well, hitting Cacnea. When Ash tries to help the two out, Roxanne holds him back, insistent on allowing the Beginner's Class their chance to take on Team Rocket by themselves. Kenny formulates a plan where Max and Poliwag distract Team Rocket, while Tommy and Magby overheat the Wurmple robot. As they execute their plan, Poliwag uses Water Gun in the same manner as Pikachu and Thunderbolt before, while avoiding Pin Missile by using Protect. This gives Tommy and Magby the chance to attack the Wurmple robot, while Anita and her rental Pidgey uses Wing Attack to free the Poké Balls. Finally, Roxanne uses her own Geodude to send Team Rocket flying by using Rollout. At the end of it all, Kenny and Anita have found renewed interest in Pokémon (Kenny also having overcome his fear of touching Pokémon), while Tommy and Max have resolved their differences.
Ash and Roxanne then get ready to face each other the next day in their Gym Battle.