As the movie begins, the narrator gives an introduction about the Pokémon world before it cuts to a scene of Ash and his Pikachu in a battle with a trainer's Druddigon. He commands Pikachu to use Thunderbolt on the Druddigon. As the Thunderbolt hits, the scene changes to a grass field where Keldeo is training with Virizion. It detects Virizion in the grass and uses Hydro Pump. As the scene progresses, and after Virizion draws its sword, Keldeo attempts to do the same thing, but was unable to do so. It then uses its horn as the sword, and clashes its horn with Virizion's sword. Later, the scene changes to rocky terrain where Keldeo trains with Terrakion. When Keldeo unleashes Focus Blast, it sends Terrakion flying, and Terrakion crashes into a boulder, which falls onto it. It manages to lift that boulder with its strength and Sacred Sword. The two eventually clash weapons. Finally, the scene changes to a dead forest as Keldeo runs alongside Cobalion. A storm envelops the area and burns a few trees down in front of Keldeo. Cobalion notices Keldeo's actions and persistence and tells Keldeo that its actions are reckless. Keldeo exclaims that it wants to battle Kyurem and when asked when it will be ready, Cobalion doesn't answer; instead, it draws its sword, and spars with Keldeo.
The scene changes to a flowing stream, where the three Swords of Justice ask themselves whether Keldeo is ready to fight Kyurem. According to Cobalion, Keldeo hasn't fully learned the weight of the sword, and is not ready yet. Keldeo overhears them and tries to convince them, but to no avail. While the Swords of Justice slept, Keldeo sneaks out and heads to Full Court, where Kyurem resides. Eventually the three notice, and so they left to search for Keldeo. When Keldeo arrives, it challenges Kyurem to battle, which the Boundary Pokémon accepts. When the Swords of Justice arrive, the two are already in battle. During the fight, Kyurem breaks off Keldeo's horn with Shadow Claw, causing the Colt Pokémon to become paralyzed with fear. Terrakion attempts to stop the fight to save Keldeo, but Cobalion tells it not to interfere. This aggravates Kyurem, who shifts into White Kyurem and freezes the trio, to prevent further interference. Noticing its friends frozen, Keldeo is overcome with fear and flees from the battle. Kyurem, furious, angrily declares that their battle is not yet over...
Meanwhile, Ash and the group are on their journey, boarding a train that leads to a city. Oshawott, Pikachu, and Axew are playing in the train car, later joined by Scraggy. The train stops at Windy Station. Cilan notices a stall selling Darumaka lunch boxes and gets some for the group, along with water bottles and Oran Berry Pops. Ash had to carry the lunch boxes, yet he trips over Scraggy, sending the boxes flying. Fortunately, the trio's Pokémon and Iris manage to catch the lunch boxes. As they all board, they accidentally left Scraggy in the station just as the train leaves, and notice he was trying to run for it. Ash urges him to jump on, but the Shedding Pokémon couldn't muster the strength to do so, so Ash commands Snivy to fetch him with Vine Whip. She manages to catch him and bring him in, but suddenly, a Pokémon slips on the mountain, landing on top of the train. Pikachu notices, and tells the rest to follow him. It was Keldeo, injured from its previous battle. As Ash and his friends find it, it warns them about Kyurem. Suddenly, Kyurem leaps onto the train and attacks the group, and soon was forced to jump off the train when the train enters a tunnel. Later on, they move to a cargo area of the train, where Iris tells the group about the legend of Kyurem, which she learned from the Village of Dragons' Elder.
The train arrives at Roshan City and the group visit the Pokémon Center there so Keldeo can be treated. Nurse Joy identifies the Colt Pokémon to the group, and tells them the legend of the Swords of Justice. She mentions that according to this legend, the three arrived at a forest plagued by flames from a war between human factions. Terrakion shaped an escape route into the earth, Virizion used its speed to shield the fleeing Pokémon, and Cobalion escorted the Pokémon to safety. Within the ashes of the now burned-down forest, they found a lone Pokémon--Keldeo--that they took in as their own.