Nathan Harper (Taylor Lautner) is a teenager who lives with his parents, Kevin (Jason Isaacs) and Mara (Maria Bello). He has a recurring nightmare, and consults a psychiatrist, Dr. Geraldine Bennett (Sigourney Weaver) to discover why.
One day, Nathan is partnered with his neighbor and longtime crush Karen Murphy (Lily Collins) on a school assignment about missing children. Karen finds a website that shows how the children would look like as adults, and Nathan discovers that a young boy named Steven Price would look exactly like him, when Price got older. Searching in his basement, he finds the same shirt that Steven is wearing in the picture and realizes that he and Steven are the same person.
Nathan calls the website's owner, unaware that he is a Russian terrorist. The man reports back to his commander, Viktor Kozlow (Michael Nyqvist), who deploys two agents to Nathan's house. They attack Nathan's parents, who tell him to run before being murdered and the house is destroyed. Nathan and Karen escape and attempt to call the police, but the call is intercepted by CIA operative Frank Burton (Alfred Molina), who tells Nathan that he's in danger and sends a team to pick him up.
Before the team arrives, Dr. Bennett appears and tells Nathan that Burton can't be trusted. She reveals that Nathan's biological father, Martin, is a CIA agent who stole a list from Kozlow with the names of corrupt CIA operatives and that Kozlow created the website in order to locate Nathan and use him as leverage to force Martin to return the list. Kozlow's men appear, having intercepted Nathan's call. Bennett tells Nathan to run away and head for a safe house in Arlington, Virginia. Karen decides to go with Nathan. Before they leave, Bennett tells him he can only trust his father and a man called Paul Rasen, and blows up her car to facilitate both their escape and her own.
Nathan and Karen arrive at the safe house, where Nathan finds Martin's cellphone as well as an address and photo of his biological mother, Lorna Price. They discover that she is dead. Nathan visits her grave and notices fresh flowers, so Karen asks the caretaker about recent visitors. He reveals that the last visitor was Paul Rasen from Nebraska.
Nathan and Karen head to Nebraska on a train; Kozlow's right-hand man follows them. When Karen leaves to get food, he kidnaps her and attempts to capture Nathan, but Nathan overpowers him and throws him off the train. Karen escapes and reunites with Nathan. They leave when the train stops in response to Kozlow's agent's death. Nathan takes Kozlow's agent's phone during the fight.
Burton and his men find and convince the two that they want to help. They stop at a diner, where Burton tells Nathan about the list. Nathan checks Martin's phone and finds the list, which contains Burton's name. Before Burton can react, Kozlow's men attack the diner and kill several of Burton's men. Nathan and Karen escape while Burton and his partner kill Kozlow's men.
Kozlow's right-hand man's cellphone rings and Nathan answers it. Kozlow reveals that he has planned to kidnap Karen's parents and will kill them if Nathan doesn't give him the list. Nathan agrees, but says that he'll choose the place of the exchange. Kozlow agrees. Nathan realizes that his nightmares are due to repressed memories of Lorna being murdered by Kozlow while trying to protect him.
Nathan decides to give Kozlow the list at a Pirates baseball game, and reveals to Karen that he actually intends to kill Kozlow. Nathan receives a call from Martin (who is also at the stadium) who tells him not to give Kazlow the list. Nathan ignores his advice, and tries to shoot Kozlow, who steals the gun and tries to force Nathan to give him the list. Burton's men, stationed all over the stadium, open fire as Nathan escapes, with Kozlow in pursuit.
Martin calls Nathan and tells him to lure Kozlow to an open area. Nathan does so, and, as Kozlow prepares to kill Nathan, Martin (Dermot Mulroney) kills Kozlow with a sniper shot fired from a nearby building. Burton's men appear and capture Nathan. On their way to CIA headquarters, Burton attempts to decrypt Martin's cellphone. However, his superiors reveal that Martin has warned them that Burton would attempt this in order to remove his own name, and Burton is detained.
Martin calls Nathan one last time and apologizes for everything. He says that he'll always be watching over Nathan, who reunites with Karen and Bennett, who tells him that she has arranged for him to live with her until he graduates, at which point he can move out to attend college. Nathan thanks her and leaves with Karen for a date in the empty stadium.