Lieutenant Danny Roman (Samuel L. Jackson), a top Chicago Police Department hostage negotiator, is approached by his partner Nate Roenick (Paul Guilfoyle) who warns him that according to an informant (whom he refuses to name), members of their own unit are embezzling large sums of money from the department's disability fund, for which Roman is a board member. When Roman goes to meet with him again he finds Roenick murdered seconds before other police arrive, pinning him as the prime suspect.
Things only get worse for Roman when Internal Affairs investigator Terence Niebaum (J. T. Walsh), whom Roenick's informant suspected of involvement in the embezzlement, is assigned to investigate the murder. After the gun that killed Roenick is linked to a case Roman had worked on, Niebaum and other investigators search Roman's house and discover papers for an offshore bank account with a deposit equal to one of the amounts of money embezzled. Roman is made to surrender his gun and badge and his colleagues are doubtful of his protests of innocence. With murder and embezzlement charges pending, Roman storms into Niebaum's office and demands answers about who set him up. When Niebaum stonewalls, Roman takes Niebaum, his administrative assistant Maggie (Siobhan Fallon), police commander Grant Frost (Ron Rifkin), and two-bit con man Rudy Timmons (Paul Giamatti) as hostages.
With the building evacuated and placed under siege by his own CPD unit and the FBI, Roman issues his conditions: finding Roenick's informant and summoning police Lt. Chris Sabian (Kevin Spacey), another top negotiator. Roman believes he can trust Sabian because he negotiates for as long as possible before using force as a last resort, and being from another precinct eliminates him as a suspect in the disability fund scheme. Sabian clashes with the CPD but is given temporary command of the unit after they hastily attempt a breach that goes poorly, resulting in additional officers becoming Roman's hostages.
Roman trades Frost to Sabian in exchange for restoring the building's electricity. With Rudy and Maggie help, he accesses Niebaum's computer and pieces together the scheme: corrupt officers submitted false disability claims that were processed by an unknown insider on the disability fund's board. He also discovers recordings of wiretaps, including a conversation that suggests Roenick was meeting his informant before he died. Sabian, using the information Roman provided, claims to have located Roenick's informant in a bid to get Roman to release the hostages. Roman realizes Sabian is bluffing when Niebaum's files reveal Roenick himself was the IAD informant.
Niebaum finally admits that after Roenick gave him wiretaps implicating three of Roman's squad mates in the embezzlement scheme, he blackmailed them for a payout to cover up their crimes, but does not know who the inside ringleader is. The same corrupt officers have secretly entered the room via the air vents under the pretext of being part of a team to take Roman out in case he started killing hostages; upon hearing Niebaum's confession, they open fire and kill Niebaum before he can reveal where he has hidden the wiretaps corroborating their guilt. Roman single-handedly fights them off using the flashbangs he seized from the officers in the previous failed breach.
Believing that Sabian and the police cannot resolve the situation, the FBI assume jurisdiction over the operation. The FBI cease negotiations, relieve Sabian of his command and order a full breach. Sabian now believes in Roman's innocence and gives him a chance to prove his case: while the FBI and SWAT raid the building and rescue the hostages, Roman escapes disguised in a SWAT uniform. Roman and Sabian proceed to Niebaum's house, but are unable to find the wiretaps. The police arrive and the corrupt officers enter the house but they back off as Frost enters and tries to talk Roman down. Sabian observes Frost discreetly loading his weapon and realizes that Frost is the ringleader of the conspiracy and Roenick's killer.
In front of Frost, Sabian seemingly shoots Roman dead and offers to destroy the "evidence" they have uncovered in return for a cut of Frost's take. Frost agrees and effectively makes a full admission to his crimes. When Frost exits the house, he discovers Roman had feigned death and used a police radio microphone to broadcast his confession to the police surrounding the area. Frost attempts to kill himself but is disarmed and arrested with the other corrupt officers. As Roman is loaded into an ambulance, Sabian gives him back his badge and departs.
- Samuel L. Jackson as Lieutenant Danny Roman
- Kevin Spacey as Lieutenant Chris Sabian
- Paul Guilfoyle as Nathan 'Nate' Roenick
- David Morse as Commander Adam Beck
- Ron Rifkin as Commander Grant Frost
- John Spencer as Chief Al Travis
- J. T. Walsh as Inspector Terence Niebaum
- Siobhan Fallon as Maggie
- Paul Giamatti as Rudy Timmons
- Regina Taylor as Karen Roman
- Bruce Beatty as Markus
- Michael Cudlitz as Palermo
- Carlos Gómez as Eagle
- Tim Kelleher as Argento
- Dean Norris as Scott
- Nestor Serrano as Hellman
- Leonard Thomas as Allen
- Stephen Lee as Farley
- Robert David Hall as Sgt. Cale Wangro
- Michael Shamus Wiles as Taylor