Lieutenant Danny Roman (Jackson) is a top police hostage negotiator. When he cannot talk a hostage-taker into surrendering, he offers himself as an additional hostage and lures the subject into a position where he can be taken down with the minimum use of force, rather than an all-out assault.
Roman is middle-aged and recently married. While celebrating his most recent success, he is approached by his colleague Nathan 'Nate' Roenick (Guilfoyle) who warns him that large sums of money are being embezzled from the Chicago Police Department's disability fund of which Roman is on the board. Roenick has an informant with whom he was at the Police Academy and served with for a while, but refuses to name him. Later that evening, Roman is summoned via his pager for another meeting with Roenick but instead finds him dead by gunshot wounds.
The case goes badly for Roman when it is assigned to Inspector Niebaum (Walsh) of the Internal Affairs Division (IAD) whom Roenick claimed was part of the embezzling. Furthermore the gun used to kill Roenick was one of three that were part of a case Roman handled in the past: two were recovered but not the third. Documents found in Roman's house indicate that the money has gone to an offshore account of which he denies any knowledge.
Facing serious charges, suspended from the force and rejected by his friends, including Roenick's widow, a frustrated Roman storms into Niebaum's office and, in the chaos that follows, takes him and several others hostage, including his personal assistant Maggie (Fallon), police Commander Grant Frost (Rifkin) and two-bit con-man Rudy Timmons (Giamatti).
With the building evacuated and placed under siege by police and FBI, Roman issues his conditions which include finding Roenick's informant and summoning police Lieutenant Chris Sabian (Spacey), another top negotiator. Sabian, who has been trying rather unsuccessfully to negotiate peace between his sulking wife (Keller) and cheeky daughter (Mulrooney), arrives on the scene. Roman and Sabian have only met once briefly and know each other through reputation, but Roman wants Sabian because he is from another side of the city, unconnected to the pension fund matter, and should be one of the few people Roman can trust.
Sabian soon finds himself in a cat-and-mouse duel with Roman and a dispute over authority between him, the local cops, and the feds, who disagree over jurisdiction and tactics. Roman of course knows every trick in the book, and the besiegers are hard pressed to find out what is going on in the room with the hostages, since he blocks the entrances to the ventilation units and destroys the security cameras and other surveillance devices. To make things more complicated, Roman is convinced that "they" (his former colleagues) are out to kill him and it is hard to tell if it is based on really good suspicions or groundless paranoia.
While Sabian tries to come up with a solution, Roman, with the help of Timmons and Maggie, gets into Niebaum's computer and discovers recordings of wiretaps, including his last conversation with Roenick. He discovers that Roenick himself was the actual informant and had passed his evidence on to the IAD. Niebaum admits that he investigated the embezzling, but then took bribes from the fraudsters. Niebaum implicates many of Roman's squadmates in the conspiracy, but does not know who the ringleader is. Before he can reveal where he has hidden the evidence, Roman's squadmates (who overheard his confession) prematurely attack and Niebaum is killed.
When it becomes apparent that Sabian and the police have lost control of the situation, the FBI orders a full-on assault. Sabian runs into the building to warn Roman of this impending attack, and he and Roman devise a plan. Roman is able to sneak out of the building during the assault by wearing a confiscated SWAT uniform; Sabian has come to the belief that Roman has a case and gives him a chance to prove his innocence. They proceed to Niebaum's house where they try to find the evidence, but are then attacked by Frost, one of the former hostages, and three other members of Roman's old squad who reveal themselves as the fraudsters and Roenick's killers.
In the course of the confrontation, Sabian suddenly shoots Roman and tells Frost that he will destroy the evidence in return for a share of the pie. Frost agrees and effectively makes a full admission to his crimes, but when he leaves the house, he finds the whole area surrounded by police who have overheard his confession via Sabian's radio. Humiliated, Frost attempts to shoot himself, but Beck quickly shoots his arm and the police seize him. Roman himself, whom Sabian had actually shot to wound, is now cleared.