In October 1992, an elite group of North Korean soldiers are put through a brutal training regime. Under the auspices of their commander, Park Mu-young (Choi Min-sik), they will be sent into South Korea as sleeper agents, to be reactivated at some later date. The most promising of the group is Lee Bang-hee, a female sniper who assassinates several key South Korean figures over the next six years.
Over six years later, in September 1998, South Korea is searching for Bang-hee. The agent in charge of her case, Yu Jong-won (Han Suk-kyu) has nightmares about her murdering both him and his partner, Lee Jang-gil (Song Kang-ho). Yu is also engaged to a young woman, Yi Myung-hyun (Yunjin Kim), a former alcoholic and the owner of a fish and aquarium supply store. Hyun symbolically gives Yu a pair of kissing gourami, a species that cannot live without its mate. Yu is worried that he cannot tell Myung-hyun about the real nature of his job due to his security clearance.
Yu and Lee are contacted by an arms dealer who claims to have information about their quarry, but he is shot dead by Bang-hee before he can give them any information. After digging a bit deeper, they determine that he had been contacted by the assassin at some point, in the effort to acquire something. That something turns out to be CTX, a binary liquid explosive developed by the South Korean government. In its ground state, CTX is indistinguishable from water, but when placed under the right temperature conditions for long enough, a 200mL worth of CTX has a 1 km blast radius. The agents begin to suspect its intended use by the assassins, when Kim, a scientist working at a lab connected to CTX, is assassinated by Bang-hee.
Park and his agents ambush a military convoy with several liters of CTX, killing all the soldiers and making off with the dangerous liquid before the agents could arrive in time to warn them. Yu and Lee suspect a leak, as they are always one step too slow. Hee is ordered to eliminate the 'kissing gourami' obstacle. Yu meets with Police Chief Ho to borrow outside forces but Ho accidentally stands in the path of a bullet fired by Hee's sniper rifle.
Park calls Yu and issues an ultimatum: he has concealed several CTX bombs around Seoul, and will give him just enough time to find each one before setting them off. He also mockingly mentions Yu's fiance. It is revealed that Park and Yu have a history: Park once hijacked a civilian airliner and killed many civilians, but managed to escape by disguising himself as a wounded member of the flight crew.
The first of the CTX bombs is found on top of a department store, but Park lied about the time factor. The bomb explodes just as the bomb disposal team discover its exact location, resulting in dozens of deaths. Yu takes Myung-hyun to hide out at a hotel and she begins drinking again.
Yu suspects Lee as the leak - who, ironically enough, suspects the same thing, as Yu has twice survived encounters with Hee he should have died in, and bugged Yu's car and phone to see if he could learn anything. Yu sets a trap by telling Lee he has new information - into which Park and his fellow agents step - but the situation quickly escalates into a firefight resulting in police and civilian casualties. Several of the Northern agents are killed while others escape. When Park is cornered, Hee comes in to save him. Yu, having survived his stand-off with Park and Hee, follows a wounded Hee. He loses her but notices the light to the aquarium turn on and covertly enters, discovering a bleeding Hyun removing her disguise. Yu walks away, shocked, and conducts a solo investigation into her history with the real, sick Hyun. Mu-young confronts Hee about her hesitancy and constant failure to kill Yu, reminding her of their primary objective.
Park calls NIS, demanding millions as well as a plane for an escape at 2pm in return for the remaining CTX. Myung-hyun's identity is confirmed by the agency later when electronic surveillance devices are discovered in fish decorating the NIS's office supplied by Hyun. Lee confronts her in her shop, and is shot by Park. Yu suddenly appears with officers, who engage in a firefight with Park and his agents. Park and Myung-hyun escape, while a dying Lee hands Hyun's soccer match ticket to Yu, set to start at 2pm.
The terrorists aim to detonate a CTX bomb directly over the Royal Box, housing all senior North and South Korean politicians, at a soccer stadium in the midst of an international friendly match played by a North and South Korean team. Yu attempts to tell NIS of the ruse and the danger in the stadium but is ignored. He defies orders and rushes to the stadium, where Park, Bang-hee, and other terrorists mingle with the crowd. They find a total ban on all liquids, but enter easily as the CTX and weapons were already planted in the stadium beforehand.
Bang-hee retrieves a hidden Steyr AUG from a restroom cubicle, while Park and his agents tail several patrolling South Korean SWAT officers who later adjourn to the restrooms. There, the policemen are killed and their bodies quickly dragged away. Myung-hyun advances into the grandstand with her rifle, while Park and three other men, now disguised as South Korean SWAT officers in uniforms stolen from the dead policemen, enter the stadium control room, killing all but one there and forcing the remaining staff to switch on the stadium lights to trigger the CTX. Yu arrives at the stadium and notices the lights. Yu goes to the control room to have them shut off but is taken captive. Sik, a rookie NIS agent, also notices the lights and soon comes in with backup. A violent confrontation in the control room results in the death of all four terrorists, and the lights are switched off in the nick of time. Myung-hyun notices this, and fires at the VIPs, but misses her target. Chasing after the entourage, she kills several more SWAT officers along the way before being confronted by a large group of officers led by Yu. As she makes a last-ditch attempt to complete her mission, she is shot dead by Yu.
Yu later learns that Bang-hee was pregnant with his child, and had left details of the renegade Northern agents' plan and her planned location on his answering machine before leaving for the stadium but had requested he not confront her himself, professing her love for him. Yu then visits the real Myung-hyun, who is at a hospital for chemo therapy, and Myung-hyun reminisces about Hee with Yu. Myung-hyun lets Yu listen to that song, and while listening to it Yu is captivated by the lyrics. The scene then fades, while Yu, still listening to the song, shuts his eyes.Han Suk-kyu as Yu Jong-won, a South Korean secret agent who engaged with Bang-hee while disguised as Myung-hyun
Choi Min-sik as Park Mu-young, a North Korean, a leader for the terrorists who has feelings for Bang-hee
Yunjin Kim as Lee Myung-hyun / Lee Bang-hee, a North Korean spy
Song Kang-ho as Lee Jang-gil, also a South Korean secret agent and Yu Jong-won's partner
Yoon Joo-sang as the chief agent
Park Yong-woo as Sik, a secret agent
Johnny Kim as Jung Dae-ho (credited as Derek Kim)
Lee Seung-shin as a physician
Kim Su-ro as a North Korean terrorist
The total budget of the film was US$8.5 million, at the time the single biggest budget allocated to a Korean movie. Part of the funding was covered by the Korean electronics giant Samsung. The film was a critical and financial success in Korea and broke box office records. Shiri was seen in South Korean cinemas by 6.5 million people, beating the previous record set by Titanic of 4.3 million.
It was also successful throughout the rest of Asia (it was a top-grossing film when released in Hong Kong), and has since been issued on video worldwide. It has also played theatrically in limited engagements in the West.
In 2014, Time Out polled several film critics, directors, actors and stunt actors to list their top action films. Shiri was listed at 96th place on this list.
The film would later serve as the basis for the television series Iris, starring Lee Byung-hun and Kim Tae-hee.