James Cole (Bruce Willis) is a convicted criminal living in a grim post-apocalyptic future. In 1996-1997, the Earth's surface was contaminated by a virus so deadly that it forced the surviving population to live underground. To earn a pardon, Cole allows scientists to send him on dangerous missions to the past to collect information on the virus, thought to be released by a terrorist organization known as the Army of the Twelve Monkeys. If possible, he is to obtain a pure sample of the original virus so a cure can be made. Throughout the film, Cole is troubled with recurring dreams involving a chase and a shooting in an airport.
On Cole's first trip, he arrives in Baltimore in 1990, not 1996 as planned. He is arrested and hospitalized in a mental institution on the diagnosis of Dr. Kathryn Railly (Madeleine Stowe). There, he encounters Jeffrey Goines (Brad Pitt), a fellow mental patient with animal rights and anti-consumerist leanings. Cole tries unsuccessfully to leave a voice mail on a number monitored by the scientists in the future. After a failed escape attempt, Cole is restrained and locked in a cell, but then disappears, returning to the future. Back in his own time, Cole is interviewed by the scientists, who play a distorted voice mail message which gives the location of the Army of the Twelve Monkeys and states that they are responsible for the virus. He is also shown photos of numerous people, including Goines. The scientists then send him back to 1996.
Cole kidnaps Railly and sets out in search of Goines, learning that he is founder of the Army of the Twelve Monkeys. When confronted, however, Goines denies any involvement with the virus and suggests that wiping out humanity was Cole's idea, originally broached at the asylum in 1990. Cole vanishes again as the police approach. After Cole disappears, Railly begins to doubt her diagnosis of Cole when she finds evidence that he is telling the truth. Cole, on the other hand, convinces himself that his future experiences are hallucinations, and persuades the scientists to send him back again. Railly attempts to settle the question of Cole's sanity by leaving a voice mail on the number he provided, creating the message the scientists played prior to his second mission. They both now realize that the coming plague is real, and make plans to enjoy the time they have left.
On their way to the airport, they learn that the Army of the Twelve Monkeys is a red herring; all the Army has done is delay traffic by releasing all the animals in the zoo. At the airport, Cole leaves a last message telling the scientists they are on the wrong track following the Army of the Twelve Monkeys, and that he will not return. He is soon confronted by Jose (Jon Seda), an acquaintance from his own time, who gives Cole a handgun and instructions to complete his mission. At the same time, Railly spots the true culprit behind the virus: Dr. Peters (David Morse), an assistant at the Goines virology lab. Peters is about to embark on a tour of several cities around the world, which matches the sequence (memorized by Cole) of viral outbreaks. Cole, while fighting through security, is fatally shot as he tries to stop Peters. As Cole dies in Railly's arms, she makes eye contact with a small boy the young James Cole witnessing his own death; the scene that will replay in his dreams for years to come. Dr. Peters, safely aboard, sits down next to Jones (Carol Florence), one of the lead scientists in the future, who introduces herself as an insurance agent and shakes his hand.