Ash and his friends reach the Violet Gym, with Ash being anxious to get his first Johto Badge. However, before they are able to go inside, Jessie and James appear, disguised as surveyors from the Pokémon Bureau, and demand that they inspect every Pokémon before anyone can enter. They take Pikachu and then escape with him in their Meowth balloon, revealing their true identities. Ash commands Pikachu to use Thunder Shock, but the attack fails because he is in an electric-proof glass case.
Ash sends out Heracross to save Pikachu, but Meowth drops a jar of sap to distract Heracross. Then, Ash and his friends notice someone hang-gliding next to Team Rocket's balloon. The hang-glider signals his Hoothoot to take Pikachu; it grabs Pikachu's case with its talons and flies back to its Trainer. With Pikachu in hand, the hang-glider begins his descent, but Jessie has Arbok use Poison Sting to poke holes in his sail. The hang-glider leaps and sends out his Pidgeot to save him from falling. The pair makes their way towards Team Rocket, evading another of Arbok's Poison Stings before puncturing the hot-air balloon.
After Team Rocket has blasted off, the hang-glider finally lands and gives Pikachu back to Ash. Ash mentions that the hand-glider's Pidgeot reminded him of the Pidgeot he used to own and how they once battled a Fearow together in Viridian Forest. He reminisces the feeling of riding on Pidgeot's back, and the hang-glider sympathizes with him, bringing up his own love of riding on Flying Pokémon and revealing them to be his favorite type. Brock asks why he loves them so much, and he responds that it was because he has always wanted to fly since he was a little boy. Then, he says he learned how to hang glide in order to understand his Pokémon better. Ash introduces himself and his friends, and the hang-glider introduces himself as Falkner, the Violet City Gym Leader, surprising the group.
Falkner escorts Ash and his friends to the Violet Gym, and after a short elevator ride, they reach the Gym's rooftop battlefield. Ash and Falkner take their positions, and the referee explains that each Trainer can use three Pokémon. Once the match begins, Falkner starts with Hoothoot, and Ash sends out Chikorita. Falkner scolds Ash for sending out a Pokémon that is weak to Flying Pokémon, but Ash defends himself by saying that not everyone should judge by type. Chikorita starts out with a Vine Whip, but Hoothoot dodges it by flying into the sky. Chikorita still tries hitting Hoothoot, but Hoothoot attacks Chikorita with Peck. Chikorita uses Razor Leaf, but Hoothoot dodges and knocks Chikorita out with Tackle.
Ash decides to use Pikachu next. Pikachu uses Agility in order to avoid getting Tackled. Hoothoot is struck down by Pikachu's Thunderbolt and finished off with Quick Attack. Falkner then sends out his Dodrio and mentions that no challenger has ever defeated it. Both Pikachu and Dodrio start off the match by using Agility. Although Pikachu tries using Thunderbolt, Dodrio dodges it by jumping up high. Dodrio then attacks Pikachu with Fury Attack and Drill Peck. While Dodrio is building up its Tri Attack, Pikachu bounces off of Dodrio's middle head and into the air. Dodrio is startled and loses its move, after which Pikachu defeats it with Thunder.
Falkner sends out his last Pokémon, Pidgeot. Despite Pikachu's exhaustion, he is still willing to fight. Pikachu starts the match with Thunderbolt, but Pidgeot easily dodges it by flying. Pidgeot then defeats Pikachu with Whirlwind. Ash then sends Charizard out. Both Charizard and Pidgeot are told to fly into the air, then Ash tells Charizard to use Flamethrower, but Pidgeot dodges. Charizard consistently uses Flamethrower and Pidgeot uses Agility to get out of the way. Pidgeot then uses Whirlwind to hit Charizard with his own Flamethrower attack, sending him back to the ground. Pidgeot approaches with a Wing Attack, and Ash commands Charizard to fly, but his wing is hurt. Pidgeot lands a direct hit, knocking Charizard to the ground again. Charizard is also hit with a Quick Attack, which leaves Ash wondering what he should do. Falkner tells him to forfeit, but Ash refuses to.
Charizard soon becomes strong enough to fly and dodges a Quick Attack. Pidgeot uses its Agility to appear behind Charizard, and it strikes Charizard with a follow-up Quick Attack. This happens again, but Charizard doesn't give up. Charizard then flies behind Pidgeot, and when Pidgeot disappears and then reappears behind Charizard, Charizard turns around and surrounds it with Fire Spin. Charizard then finishes off Pidgeot by using Seismic Toss, giving Ash the win.
Falkner presents Ash with the Zephyr Badge and admits that he has been inspired to work more and train harder. He also wishes Ash luck in the Johto League. Ash and his friends then bid farewell to Falkner. Meanwhile, Team Rocket is trapped inside their deflated balloon while being pecked by an angry horde of Spearow and Fearow.