Unbeknownst to Ash, one of the ghost Pokémon decides to join Ash and friends on their journey and more importantly help Ash battle the powerful Saffron City Gym Leader. Ash returns to Saffron City with one goal, to win a gold badge. The scene is set and Ash and the young girl are once again face to face when suddenly, Ash's ghost Pokémon is nowhere to be found. Feeling completely humiliated, Ash leaves the gym. Brock and Misty are left behind and as a result, the young girl uses her powers to turn them into miniature dolls, rendering them helpless. The mysterious man from Ash's previous encounter with this baffling Gym Leader shows up providing Ash with some information that could ultimately be the key to defeating her. Determined to rescue Brock and Misty, Ash returns to the Saffron City Gym ready to do what it takes to win and save his friends. Just when his attempt seems hopeless, the ghost Pokémon shows up with a unique combative technique. Will this be enough to rescue Ash's friends as well as the young Gym Leader from her dark and lonely world?
Ash and his friends return to the Saffron Gym as Ash remembers the last match. He is ready to go inside, but he notices that his friends and Pikachu do not want to go in, based on what happened last time. Ash believes he will win, but Brock thinks Haunter is controlling Ash. Haunter appears not to be, laughing continually. Ash brings out Charmander, Squirtle and Bulbasaur and they prepare to go inside. Everyone returns to the stadium, as Ash demands a rematch. Sabrina agrees and sends out Kadabra. Ash attempts to send out Haunter, but Haunter has disappeared. Ash freaks out, losing his confidence. Sabrina starts to get angry and orders Ash to send out another Pokémon or they will all return to the toy box. Ash tries to send Pikachu, but he backs away to the wall, scared. His other Pokémon do the same, not wanting to battle. Sabrina is purely angry as Ash decides to back out, running away, everyone following him. The exit seals off as the little girl appears from behind, using telekinesis to turn Brock and Misty into dolls. The little girl appears in front of them as Ash's Pokémon hide behind him. The man that told him to find the Ghost-type Pokémon before appears and teleports them out.
They reappear in the city and they all drop into a pile atop the man. Ash's Pokémon relax as Ash reflects on how mean Sabrina is. The man mentions that Sabrina was not always mean. Flashbacks reveal Sabrina as a young girl using telekinetic powers on everything, honing her skills at the cost of turning against her parents. The conflict caused her to split into two girls, the older Trainer and the lonely little girl. The little girl is actually a doll representing Sabrina before she practiced telekinesis. Ash notices that the picture he showed is the same one they saw in Sabrina's toy box. The man believes that Ash has found out that he is really Sabrina's father, but Ash thinks he is a photographer. Pikachu laughs and the man is somewhat astounded that Ash is that oblivious. Sabrina's father asks why he does not have a Ghost Pokémon as Ash mentions that Haunter disappeared. He must find Haunter in order to free his friends.
Ash and Pikachu scan the city for Haunter. Meanwhile, Team Rocket is alongside a skyscraper on a platform. James readies the fishing net in order to capture Pikachu, but Haunter appears in front of them, scaring Team Rocket and causing them to fall off the platform. Jessie grabs hold as everyone else clings onto her. She cannot pull up because they are too heavy. Haunter appears next to Jessie and makes funny faces, trying to get her to laugh (he even fires a gun with a "BANG!" flag in the barrel). She tries to resist because she will let go if she laughs. Eventually she cracks, laughing and releasing her grip. They crash through the sidewalk as Ash and Pikachu notice, Haunter appearing nearby. Ash wants to go back to the Gym, but Haunter does not want to battle. However, Haunter comes up with an idea and sides with Ash again as they return to the Gym.
Meanwhile, Misty and Brock, now as dolls, are sitting on a couch, unable to move. They notice another doll nearby as they realize that it is Sabrina's mother. They are shocked as she reveals that Sabrina is still good. The roof opens as the Sabrina doll looks down upon them. Misty demands a battle and for them to change them back, but she doesn't want them to change. Ash returns and asks for another match. Misty and Brock protest, but Ash is set to battle. Kadabra comes back out as Ash orders Haunter to go, but it disappears again. This time, there is no backing out as Ash freaks out. Ash falls to the floor in defeat, but Pikachu steps out to battle, even though Ash knows Pikachu is at a disadvantage. Pikachu wants to stand up for Ash as the battle begins. Pikachu uses Thunder Shock, but Kadabra Teleports to avoid it. It uses Psybeam to knock Pikachu back. Pikachu gets back up and uses a Thunderbolt, hitting and roasting Kadabra. It seems like a win, but Kadabra uses Recover to heal. The battle seems to be against Ash, but suddenly, Haunter appears in front of Sabrina and laughs. The doll believes that it is unfair to pit two against one, but Sabrina's dad reappears and says that Haunter is playing on its own, not battling, so it is not against the rules. Haunter makes funny faces and even pulls out a bomb, exploding it in front of Sabrina. The effort works as Sabrina cracks a smile, progressing to hysterical laughter. Sabrina's dad seems happy at Sabrina's breakthrough, but Ash is still unconvinced that he is her dad, making him angry. However, he notes that Haunter has helped Sabrina. Ash is still angry that he did not win, but Sabrina's dad points to Kadabra rolling on the floor laughing, since Sabrina and Kadabra are joined telepathically. Sabrina's doll disappears and drops Kadabra's Poké Ball, Misty and Brock returning to human form. Sabrina's father declares Ash the winner.
Ash and his friends leave Saffron City, Ash glancing at his new Marsh Badge. Haunter stays behind with Sabrina, and the group makes plans to head off to the next Gym in Celadon City. Meanwhile, Team Rocket is frozen in the pit being filled with cement, but they manage to get out and blast off.
For unspecified reasons, both Sabrina and Ash state that Ash caught Haunter in this episode, but Haunter had not been seen in a Poké Ball in either episode.
The Marsh Badge that Ash earns in this episode is his fourth Badge. However, in a rare deviation from the traditional sequence of Gyms, the Marsh Badge is officially the sixth Badge that the player earns in the games.
In the dub, the narrator claims that Ash returned for the biggest showdown in his life, while in the Japanese version, he simply says that Ash returned to Saffron City.
The signs that Misty, Brock, and Pikachu hold when they are reluctant to enter the Gym were translated in the dub to "Go Ash Go!" (Brock), Ash's face (both Misty), and "Good Luck" (Pikachu). Originally, they said "Never Give Up, Ash", "Guts" (left), and "Do Your Best" (right) for Brock and Misty's signs, respectively, whereas Pikachu's sign was the same as the dub in terms of translation.
Brock says to Ash after he tells them about how Haunter will make sure that Ash wins against Sabrina: "I wouldn't be too sure, Ash. What if Haunter's the one controlling you?" Originally, Brock just reminds Ash that he should keep an eye on Haunter so that it won't disappear on him.
In the dub, Ash believed that the man knew so much about Sabrina because he was her photographer, while in the Japanese version Ash believed that he is a neighbor of Sabrina's.
Originally, the egg that falls on Team Rocket was meant to be an egg of Columbus, and James explains what an egg of Columbus was, followed by Jessie saying that she thought it was in reference to Christopher Columbus liking eggs. This was changed by the dub to a variation of the "Which came first: the chicken or the egg?" argument.
In the Japanese version, when Ash and his Pokémon end up on Sabrina's father's back, Ash tells Pikachu to not "pika pika" him and demands Pikachu to get off. In the dub, Ash tells Pikachu he's happy he's safe and asks Pikachu kindly to get off his back.
In the dub, Brock says he is allergic to ghosts, while in the Japanese version Brock says he cannot get used to Ash's new friend.