Luke Sinclair (Dorian Harewood) returns home one day to discover his wife and daughter murdered. In the subsequent murder trial, the killer, Devin Campbell (Toby Holguin), gets away scot free on a technicality. Enraged, Sinclair steals a policeman's gun and shoots the murderer to death in front of the courthouse. Sinclair himself is then subsequently jailed for 15 years.
12 years later, Sinclair is once again denied parole because he refuses to acknowledge that what he did was wrong, believing Campbell deserved to die. He returns to Lancaster State Penitentiary, where he saves the life of mafia boss Lorenzo “Enzo” Marcelli (Roy Scheider) from another inmate (Sam J. Jones). Enzo repays the favour by organizing that Sinclair be transferred to the high-tech new Redwood Federal Penitentiary. Sinclair doesn't want to leave Lancaster but his pleas to stay fall on the deaf ears of Warden Jack Kramer (Ed O'Ross).
The other convicts being transferred include Tommy “Zimm” Zimmer (John Toles-Bey), a man who murdered his wife and her lesbian lover; Ian Kelly (Don Swayze), an arsonist who killed 14 people in a rental car shop he blew up because he didn't like the service; and Hector “the Director” Miller (Clint Howard), a serial killer who based all of his crimes upon scenes from horror movies and who speaks exclusively in film quotes. They are loaded onto a passenger train under the care of Officer Ralph Kantor (Blake Gibbons), who muses that they can't travel by air ever since that plane full of convicts went down in Las Vegas. Also aboard the train is a young girl, Alex Kittner (Mallory Farrow) who is dropped off by her sister Marney (Heidi Epper). Alex meets and befriends bartender Zoe Clark (Delane Matthews), and also encounters ticket inspector Joe Manetti (Steven Barr) and an abrasive passenger named Vince (Richard Foronjy).
During the train ride, Enzo asks to go to the bathroom. Once alone inside the cubicle, Enzo retrieves a lockpick hidden in the toilet paper and escapes. A chaotic shootout ensues, during which Enzo, assisted by Vince and Joe (by now revealed to be villains) kills most of the guards. Enzo releases the other prisoners, except for the crazy and unpredictable Hector. Sinclair is hesitant to join the group, but reluctantly agrees to once Enzo threatens him. Officer Kantor, who survived, escapes and warns Zoe of the jailbreak. She calls the local sheriff, Wes Blaidek (Ray Wise), who in turn contacts Warden Kramer.
Kantor fights Joe but manages to kill him by throwing him from the train. Enzo uses the train's P.A. system to lure all of the passengers to the last car, where he takes them hostage except for Zoe, who hides behind the bar. Sinclair finds her, but doesn't tell the others. She is subsequently discovered by Vince and forced by Enzo to feed Sheriff Blaidek false information. However the use of a code word clues the Sheriff in and he is able to figure out where the convicts plan to escape the train. Meanwhile, Ian sets off an explosive to get into the locomotive car, but in doing so accidentally kills both Kantor and the train engineer (Rance Howard).
Enzo's plan is to take three hostages and use them as cover while he and the other criminals escape in a chopper, which was pre-arranged to meet them. He selects Zoe, Alex and a particularly mouthy passenger called Edward (Chick Vennera). However, Sheriff Blaidek and Warden Kramer have set up an ambush at the drop site. Kramer fires his gun at Enzo's head but intentionally misses, instigating a shootout. Sinclair takes the opportunity to abandon the criminals and retreats back onto the train with Zoe and Alex. Two cops are killed before Enzo executes Edward and flees back to the train with the other convicts. Blaidek jumps onto the damaged chopper as it attempts to fly away and manages to jump onto the train as it departs, moments before the chopper crashes and explodes. In the meantime, Hector escapes from his chains and roams the train free.
An enraged Enzo orders his men to sweep the train, find the traitorous Sinclair and kill him. Sinclair tries to detach the car carrying the hostages, but is confronted by Zimm. Sinclair tries to reason with Zimm before Blaidek appears and holds them at gunpoint. Zimm turns his gun on Blaidek and is shot dead while Sinclair leaps from the train. Blaidek also shoots and kills Vince, but while trying to gain access to a train car, he unknowingly sets off a bomb planted by Ian, and is killed. Elsewhere, Deputy Matt Baker (Bill McGee) and Warden Kramer pursue the train in a cop car. Deputy Baker calls Anthony Tait (Keith Coogan), a cop back at the station, and orders him to reroute the train. Tait's plan is to first turn the train onto the Los Angeles line and then reroute it onto a different line which will take it to an abandoned station. However, an abandoned car left parked on the tracks interferes this plan when the train collides with it; the train is now headed straight for Union Station, with no signs of stopping. Meanwhile, Sinclair runs into a nearby town, steals a motorcycle and uses it to get back on board the train.
Zoe and Alex are hiding in the locomotive when Hector appears with a gun and begins quoting Taxi Driver; however, Alex actually finishes the quote, gaining Hector's respect so he decides to spare them. Zoe is then recaptured by Enzo, but Sinclair arrives to save her. He is overpowered by both Enzo and Ian, but before Ian can kill him, the train derails and crash head-on into Union Station. Ian is knocked out, but Enzo grabs Zoe at gunpoint and flees into the station. He is confronted by Kramer, who reveals that he was in on the plan the entire time, but never wanted anyone to be hurt or killed. Enzo shoots him to death and runs off with Zoe. Sinclair pursues them onto a platform and beats Enzo up, then takes the gun and prepares to execute him. However Zoe reminds him that if Sinclair kills Enzo, he will be no better than Enzo. Sinclair then throws the gun down.
Some time later, Sinclair attends another parole hearing, and is surprised to learn that his parole has been granted by the government as a reward for his heroic efforts. He then drives away a free man into the sunset with Zoe.
- Dorian Harewood as Luke Sinclair, a good man serving a jail sentence for the murder of his wife and daughter's killer.
Aboard the TrainEdit
- Mallory Farrow as Alex Kittner, a young girl travelling alone on the train. Her name is a reference to the young boy who is eaten alive in Jaws, which starred Roy Scheider.
- Clint Howard as Hector “the Director” Miller, a movie-obsessed serial killer who murdered eleven people six years ago; all of his crimes recreate a scene from a horror movie, and he now only speaks in movie quotes such as “Frankly my dear, I don't give a damn” or “I love the smell of napalm in the morning. Smells like...like victory.”
- Chick Vennera as Edward, a loud-mouthed indiviual who, according to Enzo, always asks stupid questions. These stupid questions later get him killed at Enzo's hands.
- Rance Howard as the train engineer. Rance Howard is the father of Clint Howard, who plays Hector the Director.
- Blake Gibbons as Officer Ralph Kantor, the agent overseeing the transfer which inevitably goes awry.
- Don Swayze as Ian Kelly, an arsonist and bomb expert who killed 14 people when he blew up a car rental shop because he didn't like the service.
- John Toles-Bey as Tommy “Zimm” Zimmerman, a man serving a life sentence for the murder of his wife and her lesbian lover.
- Steven Barr as Joe Manetti, a man who claims he is “filling in for Andy” the usual ticket inspector, but later turns out to be one of Enzo's thugs.
Additionally, Sam J. Jones of Flash Gordon fame portrays a convict who tries to stab Enzo during a prison fight; Michael Tucci portrays the judge who presides over Luke Sinclair's trial; Dick Van Patten appears as the parole officer; Heidi Epper plays Marney Kittner, Alex's older sister; Toby Holguin appears as Devin Campbell, the man who murdered Sinclair's family and Michael Kaufman plays his attorney.