Aboard a large ferry, Ash and Pikachu are on their way to the Hoenn region. As they have fun and discuss their upcoming adventures, Ash spots the Captain walking by and asks him when the ship will arrive in Littleroot Town. The Captain replies that they will arrive by tomorrow night. Meanwhile, Team Rocket is watching from their hiding place inside a lifeboat, and start to discuss about stealing Pikachu.
That night, the trio uses their extendable grabber to snatch Pikachu from Ash's bed. He wakes up when Pikachu cries out, but by the time he gets out of his room, Team Rocket is nowhere to be seen. During his search, he bumps into the Captain, who uses a computer to scan the ship for stowaways. They discover Team Rocket eating in the food storage area while Pikachu is in an electricity-proof glass case. When they are discovered, they recite their motto before sending out Arbok and Weezing to battle the Captain's Machoke. Ash intends to send out one of his Pokémon to help, but then, he remembers he left them all in Pallet Town. During the ensuing battle, Arbok's Acid melts a hole into the ship's water storage tank, and everyone is swept away in a torrent of water.
The Captain and Machoke manage to climb out of the water, where he reaches one of the help phones and orders the ship to the nearest port for repair. Team Rocket runs along the deck of the ship and launches a rope to a nearby crane, allowing them to swing to shore. As they are swinging Ash jumps and grabs onto Wobbuffet, but they swing into the crane and all fall to the port below. Ash lands on some crates, breaking his fall. Jessie, James and Wobbuffet land on one truck, and Meowth and Pikachu land on another. Both trucks then drive off, but they both go in different directions, splitting the groups up. Ash manages to break out of the crates just as Officer Jenny pulls up on her motorcycle and Ash explains what happened.
Meanwhile, the truck which Meowth and Pikachu are on makes a sharp swerve, tossing them off near some warehouses. Pikachu's cage breaks opens, while Meowth sustains a head injury. While they are walking along, Meowth and Pikachu start to argue, but then a Haunter comes up behind them and attacks them with Night Shade. They both dodge it and Meowth retaliates with Fury Swipes, which just passes straight through it. Haunter uses another Night Shade, and Pikachu replies with a Thunderbolts, which scares it off. Suddenly some Pidgey, Oddish and Rattata emerge from hiding and surround the pair.
Back by the ship, Ash hops into Officer Jenny's sidecar, and they are ready to leave. The captain calls down to Ash that the tank should be fixed by nightfall, and that if he is not back by then they will be forced to leave without him. Jenny then sends her Pidgeot to look for Team Rocket.
In one of the warehouses, the Pokémon explain to Pikachu and Meowth that a group of Haunter had moved into the area and began scaring everyone. Meowth suggests that the Pokémon should fight back, but a Rattata adds that there are multiple Haunter. Another Oddish rushes to its friends and informs everyone that Haunter is coming for them with all of its buddies. Elsewhere, Team Rocket is in their balloon, and while James is searching for Meowth, Jessie is more interested in finding Pikachu. Back with Ash, Officer Jenny asks Ash about his Pikachu, and he details his strong friendship with Pikachu. Pidgeot seems to have spotted something and speeds up, and Officer Jenny follows.
Meanwhile, the Haunter have shown up and tell the other Pokémon to get out of their turf. Meowth tries to back away from them and talk his way out of confrontation, but Pikachu bravely speaks up on behalf of the Pokémon. Meowth urges him to stop provoking the Haunter, but Pikachu insists that Ash would have done the same and that it is the right thing to do. Haunter then launches a Shadow Ball at them, which they both dodge. Pikachu attempts a Thunderbolt, but the Haunter scatter to evade and quickly surround them. They Haunter lash out with a joint Night Shade, but Pikachu jumps onto Meowth to leap into the sky and avoid the attack. Pikachu follows up with a Thunderbolt, causing the Haunter to flee. The Pokémon reappear and happy to have been rescued again. The Rattata and the others plead for Pikachu to stay with them for protection. However Meowth explains that Pikachu already has someone he needs to be with, but to Pikachu's surprise, Meowth claims that Pikachu is already Team Rocket’s property.
Jessie and James fly onto the scene with their balloon and trap Pikachu in a metal clamp. Meowth is pleasantly surprised, and soon Jessie hoists him up to the balloon. On Jessie's command, James reveals a hidden electromagnet, which instantly pins Pikachu to the device. Pidgeot shows up and pierces their balloon, causing it to crash to the ground. Officer Jenny rides into the scene, and soon enough Ash and Pikachu are reunited. Jenny scolds the trio for their attempted theft, however, Jessie answers back before James reactivates the electromagnet. Ash tries to hold onto Pikachu, but he is knocked to the ground when an oil drum strikes him. The magnetic force has also exposed the Haunter group's hiding spot. Ash calls out to his friend, but Pikachu is stuck to the magnet’s surface and he is beginning to feel pain as his electricity is drained from him. Ash and Jenny can't do anything, but one of the Rattata rushes in for a Hyper Fang and frees Pikachu from the metal clamp. Team Rocket runs after him, but the Haunter use Night Shade on the electromagnet, sending them blasting off. Afterwards, the Haunter and Rattata shake hands, as Ash cradles Pikachu.
The Captain regretfully looks over the port as the ship starts to sail off into the sunset. However, Officer Jenny's Pidgeot manages to deliver Ash and Pikachu onto the ship. That night, Pikachu is sleeping on Ash's bed while he is looking at him. Ash tucks Pikachu in, saying that he deserves a good rest. Meanwhile, the Rocket trio are pinned to the ship’s hull by their electromagnet and the metal remnants of their balloon.
The following day, the skyline of Littleroot Town is now in sight. Ash steps up on the deck in his new clothes and looks on, eager to reach Hoenn. Ash immediately spots some exotic Pokémon. Some Wingull and Pelipper fly alongside the ship, as several Sharpedo leap from the water and a pod of Wailmer swim alongside it. Ash rushes back to his cabin to check on Pikachu, hoping to show him some of the new Pokémon. However, Pikachu starts to spark and Ash realizes that he has a serious fever. Ash looks worriedly at Pikachu just as a new chapter in their journey together is about to begin.