서기 2035년 미래의 인류는 바이러스 감염으로 인해 99%가 멸망하고 소수의 생손자들은 지상에서의 생활을 포기한 채 지하 세계에서 생활하게 된다. 감옥에 수감되어 있는 제임스 콜(James Cole: 브루스 윌리스 분)은 자원 임무를 띠고 지상으로 나가게 되고 그곳에서 사자와 여러 동물들이 배회하는 것을 보며 '12 몽키즈'란 단체의 마크를 보게 된다. 탐사업무를 끝내고 돌아온 제임스에게 일련의 과학자들은 그에게 인류의 지상회복을 도와준다면 완전 사면을 해주겠다고 제의한다. 결국 그는 시간을 거슬러 올라가 바이러스가 퍼지게 된 1996년으로 보내진다. 그러나 어떤 착오로 인해 1990년으로 보내지고 그곳에서 경찰을 부상입히는 등 말썽을 피워 정신 병원에 수감된다. 그는 곧 인류가 바이러스에 의해 멸망할 것이라고 설득하지만 아무도 그의 말을 믿으려 하지 않았다. 그의 담당의사인 캐서린 레일리(Dr. Kathryn Railly: 매들린 스토우 분) 박사는 그를 치료하면서 어디서 본 것 같은 느낌을 갖는다. 그리고 제임스와 같은 병동에 수감되어 있는 제프리 고인즈(Jeffrey Goines: 브래드 피트 분)라는 사람은 부친이 대단히 유명한 바이러스 연구학자로 아버지에게 연락이 닿으면 언제든지 나갈 수 있다고 큰소리 친다. TV를 통해 인간들의 폭력을 본 제임스는 혼잣말로 인류가 멸망을 자초한 것이라고 말하자 제프리는 그에 동조하며 인류는 바이러스 같은 것으로 망해야 한다고 말한다. 제임스는 제프리의 도움으로 탈주하지만 다시 붙잡혀 감옥에 수감 도중 미래로 돌아간다. 과학자들이 제시한 자료를 통해 제프리가 12 몽키즈라는 단체의 주요 인물임을 알아내어 제임스는 다시 1996년으로 보내진다. 그러나 실수로 1910년대의 프랑스 전쟁터로 떨어져 위기를 맞게 된다. [스포일러 주의] 위기의 순간 그는 다시 1996년으로 보내지고 6년만에 레일리 박사를 만나게 된다. 제임스는 자신의 말을 믿지 않았던 그녀에게 1914년 전쟁터에서 자신이 위기에 순간에 찍혔던 사진으로 진실에 대한 확신을 주지만 레일리 박사의 납치 사건으로 경찰의 추격을 받는다. 제임스가 미래에서 다시 돌아왔을 때 제프리 일당이 한 일은 동물원에 갇혀있던 동물들을 풀어놓는 장난에 불과하다는 것을 알게 된다. 바이러스를 확산시킨 진짜 범인은 제임스가 어려서부터 꿈에서 보아왔던 제프리 부친의 조수라는 것을 알게 되어 공항을 탈출하려던 그를 막으려 한다.