Kyle Pratt (Jodie Foster) is a propulsion engineer based in Berlin, Germany. Her husband David (John Benjamin Hickey) died from falling off the roof of an avionic manufacturing building, and now Kyle and her six year-old daughter Julia (Marlene Lawston) are flying home to Long Island to bury him and stay with Kyle's parents. They fly aboard a passenger aircraft, an Elgin 474, which Kyle helped design. After falling asleep for a few hours, Kyle wakes to find that Julia is missing. After trying to remain calm at first, she begins to panic, and Captain Marcus Rich (Sean Bean) is forced to conduct a search. Kyle walks the aisles, questioning people, but none of her fellow passengers remember having seen her daughter. One of the flight attendants calls in to the airport they just departed from and, shockingly, the gate attendant says that they have no record of Julia boarding the flight. In addition, according to the passenger manifest, Julia's seat is registered empty. When Kyle checks for Julia's boarding pass, it is missing.
Marcus refuses to allow the cargo hold to be searched because the searchers could be hurt if the plane shifted due to turbulence. Both Marcus and the other crew members suspect that Kyle has become unhinged by her husband's recent death, and has imagined bringing her daughter aboard. One flight attendant Stephanie (Kate Beahan) is exceptionally unsympathetic. Faced with the crew's increasing skepticism regarding her daughter's existence, Kyle becomes more and more desperate. Because of her increasingly erratic, panicked behavior, air marshal Gene Carson (Peter Sarsgaard) is ordered by Marcus to guard and handcuff her.
Later on, Marcus receives a wire from the hospital in Berlin. It says that Julia was with her father when he fell off the roof, and she also died of internal injuries. Kyle furiously denies that, consistently claiming that she brought Julia aboard. The crew now believes she is delusional and she is brought back to her seat by Air Marshal Carson. A therapist (Greta Scacchi) on board tries to console her, causing Kyle for a moment to doubt her own sanity until she notices that a heart Julia had drawn earlier on the window next to her seat is real. Kyle is emboldened and convinces the therapist to let her use the bathroom. With her handcuffs now removed, she climbs into the upper compartment and sabotages the aircraft's electronics, deploying the oxygen masks and interrupting lighting. Some passengers brawl with the red herring Arab passengers on board. She uses the chaos to take an elevator to the lower freight deck. She desperately searches for Julia and finally opens her husband's casket to which she emotionally breaks down. Carson finds her and escorts her back.
Kyle makes a final plea to Carson that she needs to search the plane upon landing. Carson considers for a moment, then "goes to speak to the captain," against flight attendant Stephanie's command (they are landing), leaving the audience to momentarily believe he is sympathetic. Instead, he sneaks back into the freight deck to remove two small explosives and a detonator concealed in David's casket. He then climbs down to a part of the avionics section, revealing Julia is sleeping (presumably drugged) with her coat and backpack that no one could find. He attaches the explosives to the side of the platform and arms them. At this point, it is revealed that Carson, Stephanie, and the coroner in Berlin (Christian Berkel) are the antagonists and part of a conspiracy. Carson tells the captain that Kyle is a hijacker and is threatening to blow up the aircraft with explosives hidden in the un-X-rayed casket unless the airline transfers $50,000,000 into a bank account. It is revealed that the conspirators killed Kyle's husband and abducted Julia in order to frame Kyle. Carson tells an unnerved Stephanie that he intends to blow up the aircraft's avionics section, killing the unconscious Julia, and leave Kyle dead with the detonator in her hand.
After making an emergency landing at Goose Bay Airport in Goose Bay, Labrador, the passengers exit the aircraft as the tarmac is surrounded by U.S. Federal Bureau of Investigation (FBI) agents (though the airport is properly Royal Canadian Mounted Police jurisdiction). As the captain is leaving, Kyle runs to speak to him with Carson in tow. The captain demands she give up her charade, revealing Carson's deception. Quickly playing the role of hijacker, Kyle demands that Carson stay on board and the crew disembark.
As soon as the plane's door closes, Kyle knocks Carson unconscious with a fire extinguisher, handcuffs him to a rail, and takes the detonator from his pocket. Stephanie comes out of hiding and Kyle screams "she's in avionics isn't she?" Carson quickly regains consciousness and fires at Kyle with a concealed gun, sending her running. He chases after Kyle shooting, until she locks herself in the cockpit. He reveals his conspiracy to talk her out. She opens a hatch door to the upper level and throws out a binder to fool him. Carson hears the upstairs thud and leaves. Kyle exits and encounters a guilt-ridden Stephanie slapping her palm with a large flashlight. Kyle talks her down and punches her out. Stephanie panics and flees the plane, abandoning Carson who looks on.
Kyle during this time searches avionics and finally finds the unconscious Julia. Carson soon follows, and while searching, tells her how he gagged and dumped her daughter into the food bin. He disparages the people aboard who would never care enough to notice. Carson points his gun to where Julia lay before, but they're not there. He turns around and sees Kyle carrying Julia, escaping through a small door with the detonator in hand. Carson shoots at her as she closes the door. She detonates the explosives, killing Carson. The compartment she and Julia hid in was non-combustible, which keeps them safe. Kyle, carrying Julia, exits via a cargo door. Everyone watches in shock and amazement as Kyle carries her daughter out onto the tarmac.
Later in the passenger waiting section of the airport, Marcus apologizes to a seated Kyle holding Julia in her arms. Stephanie is led away by FBI agents and more agents approach Kyle, asking her to identify the morgue director in Berlin who has been detained. She carries Julia still unconscious through the crowd of passengers, silently redeeming herself. One of the Arab passengers (Michael Irby) helps pick up her bag, a symbolic act of respect and forgiveness. Before loading her daughter into a van to take them away, Julia wakes up and sleepily asks "Are we there yet?" as they drive away.
In this movie appears Christian Berkel
who will later play the role of Fritz Shimon Haber in Haber