The film focuses on Celebi, who travels to the future with a boy named Sam while being chased by a hunter. Meanwhile, Ash, Misty, Brock, and Pikachu are on their way to the next gym in their Johto journey and get a lift from a man named Maki, who takes them to his hometown of Arborville. They see a Suicune (who was actually the first Pokémon Ash saw in Johto). When they plan to enter a forest that is claimed to have many unusual and rare Pokémon, they are warned by an elderly lady about the "Voice of the Forest", which may carry a person off to a different period in time unless those hearing it stand still.
Ash finds Sam alone in the forest, as Celebi has fled. Sam awakens and discovers he is forty years in the future from when he was. He, Ash, and the others search for Celebi and they find it in a tree. After some convincing, the gang manage to gain Celebi's trust. They run into a high-ranking member of Team Rocket, the Iron Masked Marauder, who has been trying to capture Celebi. Jessie, James, and Meowth also team up with the Iron Masked Marauder to capture Celebi.
The heroes take Celebi to its home, the Lake of Life, where it is healed by the water. The group spend the night in the forest. The next day, Celebi is captured by the Iron Masked Marauder and is turned evil by the Dark Ball, a ball with special powers that turns the captured Pokémon evil, and immensely strengthen and magnify all of their abilities to the highest power level. Ash attempts to save Celebi by climbing the Marauder's robot, which falls over and throws them both out. Ash lands on the ground, but the Marauder begins to step on his hand; it keeps doing this until Ash falls unconscious. The Iron Masked Marauder orders Celebi create a giant monster from parts of the forest, as he reveals his true plan is to overthrow Giovanni and take control of Team Rocket now that he has a legendary Pokémon to destroy him for good. The heroes chase after Celebi in Maki's flying boat, but are brought down by the evil Celebi's attacks. The Iron Masked Marauder tries to kill Ash and Sam, but Suicune saves them. Brock sends out his Onix, and it and Suicune do battle with the Masked Marauder's evil Tyranitar, while Ash, Sam, and Pikachu clamber into Celebi's creature and manage to get Celebi to remember its memories, successfully bringing Celebi back to normal, and destroying the Iron Masked Marauder's Dark Balls in the process, releasing his Scizor, Sneasel, and Tyranitar.
With the collapse of the giant monster, the Iron Masked Marauder falls into the lake. The other heroes rush to the lake's edge and find Ash and Sam with Celebi, who suddenly falls limp. Ash and Sam realize Celebi is dead and everyone weeps, while the Pokémon of the forest howl in grief. However, the Voice of the Forest materializes in the sky and numerous of Celebi appear and resurrect Celebi. The Iron Masked Marauder suddenly appears and kidnaps Celebi and flies up with a jetpack, but Ash and Pikachu hold onto him as he flies away. Pikachu destroys the Masked Marauder's jetpack with a "ThunderBolt" attack and they fall to the ground, but Celebi saves them. The Iron Masked Marauder falls onto the forest floor (losing his mask and Dark Balls in the process) and is confronted by the old woman, her granddaughter Diana, Maki, and all the Pokémon of the forest.
Celebi prepares to bring Sam back to his own time. He has an emotional farewell with Ash and departs with Celebi. Before Ash leaves the town into his next journey, he talks to Professor Oak about what happened, and muses about the story. Professor Oak tells a sad Ash that he and Sam are going to be friends forever as true, strong and close friendships can withstand the test of time.
Ash, Brock, and Misty realise they never told Professor Oak Sam's name, but are soon distracted by the departing boat. Professor Oak is then shown with the sketch-book from earlier in the film, revealing that Professor Oak (whose first name is Samuel) is the grown-up Sam. He finally reveals it happened like it was only yesterday, after musing on a sketch he drew of a sleeping Pikachu and Celebi.
At the end of the film, Jessie (who got caught in Celebi's powerful wind when it was ordered to create the giant monster from the Marauder's control) is seen laying in the Lake of Life and feeling relaxed. Then, James and Meowth arrive on a raft to rescue her. Suddenly, the Tyranitar (who still has its powers increased to the highest level) emerges from the lake and attacks them, destroying their raft. As the Tyranitar swims away, the Scizor and Sneasel watch from the trees as they both leave and disappear into the fog. Team Rocket all come out of the water with Meowth saying he's all tingly, including James. As all three lay together in the water, they all say "Looks like Team Rocket's floating away," and all make a refreshed "Ah!"
- The storyline continues in Little Bear's Adventures of Pokémon Heroes.