Ash and his friends arrive at the local Pokémon Center shortly before a blizzard is expected to start. While they're talking to Nurse Joy, a Snorunt comes in. Joy tells them it's a bit of a trickster and frequently borrows things from visitors. At this point, they notice that it's holding Ash's badge case. However, Joy tells Ash not to worry, that it always returns things before long. Ash is not inclined to wait, and has Pikachu and Corphish chase it down. When they have it cornered, Ash demands that it return his badges. It returns one badge and uses Double Team to get away with the rest.
Meanwhile, Team Rocket is trudging through the snow outside, very hungry, as they haven't eaten for a day. Jessie has just collapsed in the snow when James spots the Pokémon Center. The thought of the food inside is enough to get Jessie moving again. Ash, Brock, May, Max and Joy are searching the Pokémon Center for Snorunt, when they find another badge lying on the floor. Ash doesn't like the idea that it's returning his badges one at a time. Suddenly, Corphish charges off, and the others, suspecting that it has somehow sensed Snorunt, follow.
They end up in the kitchen. Ash looks around, sees nothing, and shouts "We know you're hiding in here somewhere! Come out and give my badges back!" Very confused as to how he knew they were there, Team Rocket comes out from behind some boxes, food in hand (and in mouth). They deny any involvement with his badges, and say they weren't even doing anything wrong. All they did was sneak in and take food without permission. Still, May and Joy are offended by this.
At about this time, Snorunt comes out from behind another stack of boxes, and everyone's attention is off Team Rocket. Jessie and James don't like being ignored, and start shouting to get attention. They succeed, and when Joy yells at them about stealing the Center's food, Snorunt suddenly becomes very serious and attacks them. Working together, Pikachu and Snorunt defeat Team Rocket, Pikachu sends them flying, and Snorunt opens a window to let them out.
Ash thanks Snorunt for its help, and again asks for his badges back. It gets the case out, starts handing it over... then freezes Ash with Icy Wind and hops out the window. Ash breaks free from the ice and follows it. The others, realizing that the storm is going to start soon, set out to bring him back. Ash catches up with Snorunt at the edge of a steep hill, where it dances around a bit to taunt him. The ice at the edge crumbles under its foot, and it ends up sliding out of control down the hill. Ash goes into his usual Rescue Mode, catches up with it, and when they're about to slide into a large rock, maneuvers them so that he takes the full impact on his back, protecting Snorunt.
Ash is knocked out, and Snorunt is unable to wake him. The storm has started. Brock, May, and Max return to the Pokémon Center without Ash. Ash wakes up to find himself in a snow cave with Snorunt. He thanks it for saving him, and it gives him an apple. They share it, and Ash says something about how worried the others must be. Snorunt gives him a couple more apples, then takes his hat and walks off into the storm.
At the Pokémon Center, it delivers the hat to the others. As soon as the storm is over, they ask it to lead them to Ash, and set off on snowmobiles.
They find Ash right where Snorunt left him, and there is a reunion. As Ash once again asks Snorunt to give his badges back, a giant hand comes out of nowhere and grabs both Snorunt and Pikachu. It is, of course, Team Rocket.
Pikachu and Snorunt are caught in boxes. Pikachu tries to escape with an Electric attack, and as usual, it fails. Jessie laughs, saying "Of course we made it strong against electricity". Snorunt tries to escape with Icy Wind, and James laughs, saying "Of course we made it strong against... wait a minute..."
Snorunt breaks out of the box. It uses Icy Wind against Team Rocket Jessie yells at Wobbuffet to "Do something!", and it uses what appears to be Mirror Coat. Team Rocket manages to escape in the balloon with their Pikachu-in-a-box.
Jessie and James are not very disappointed that their plan half failed. After all, they got Pikachu. They're not quite so happy when they find the twerps and Joy following them on the snowmobiles (following one of the usual Convenient Paths™ through the woods). Team Rocket manages to speed up, but Joy knows a way to catch up. This method apparently involves leaving the path, going through the woods at high speed, then going off a jump just as the balloon goes by. At the top of their trajectory, Ash throws Snorunt at the balloon.
Snorunt freezes Jessie, James, Meowth, Wobbuffet, and the balloon itself, then jumps out with Pikachu-in-a-box before the balloon crashes down. Ash soon gets Pikachu out of the box, and with Pikachu and Snorunt, defeats Team Rocket and their Pokémon, and sends them blasting off.
Snorunt is still reluctant to return the badges. One of the group speculates that it doesn't want to, because it likes Ash and if it gave them back, he'd leave, and it wouldn't be able to play with him any more. Ash tries to solve the dilemma by inviting Snorunt to come with him. Snorunt responds with an unmistakable "you wanna fight?" motion. It may like him, but it isn't about to be captured without seeing if he's strong enough first.
Ash battles it with Pikachu. After a long fight, he wins, the last attack knocking the badge case away from Snorunt. Ash throws a Poké Ball, beep beep beep, and he's caught it. The final scene is back at the Pokémon Center, with Snorunt being introduced to all the group's Pokémon. Corphish gets a little too close and acts a little to aggressive, and gets frozen. May has Combusken thaw Corphish with a Fire Spin, and Ash sits down for a little talk with Snorunt about acceptable behavior.