Convicted robber Albert Ganz is working as part of a road gang in California, when a big Native American man named Billy Bear drives up in a pickup truck and asks for water to cool off his trucks overheating radiator. Ganz and Billy end up in a fight with each other, and when the guards try to break up the fight, Billy slips a gun to Ganz, and Billy and Ganz kill two out of the three guards. Billy is one of Ganz's partners in a gang of thieves, and Billy has helped Ganz escape from prison. Two days later, Ganz and Billy kill Henry Wong, who was one of their partners.
Later that same day, alcoholic San Francisco cop Jack Cates (Nick Nolte) joins two of his friends and co-workers -- Detective Algren and Detective VanZant -- at the Walden Hotel to check out a man named G.P. Polson, who is in Room 27. Jack waits downstairs while Algren and VanZant head to Room 27, where it turns out that G.P. Polson is Ganz using a fake name. Ganz immediately kills VanZant, and shoots Algren, while Billy attends to some other business in the room next door to room 27. Jack hears the shots and rushes upstairs, where Algren tells him to go downstairs and find Ganz and Billy. Jack confronts Ganz and Billy downstairs. When Algren makes it downstairs, Ganz takes Jack's gun and uses it to kill Algren, and then Ganz and Billy escape with Jack's gun.
At the station, Jack is issued a new gun, a Colt .45, and fellow cop Ben Kehoe tells Jack about Ganz's former partner Reggie Hammond (Eddie Murphy), who is in prison with 6 months to go on a three year sentence for armed robbery. Jack tells his boss, Haden, that he wants to work alone in the search for Ganz, and then Jack visits Reggie at the prison.
Jack gets Reggie a 48-hour leave from the prison so Reggie can help Jack find Ganz and Billy. Reggie leads Jack to an apartment that Ganz's only other partner, Luther, lives in.
Jack and Reggie don't know that a few days ago, Ganz and Billy kidnapped Luther's girlfriend Rosalie. When Jack steps inside Luther's apartment and starts looking around, Luther runs upstairs to the apartment and fires a shot at Jack. Jack chases Luther to Jack's car, where Reggie is handcuffed to the steering wheel. After getting nothing out of Luther, Jack puts Luther in jail. That night, Reggie leads Jack to Torchy's, a redneck hangout where Billy used to be a bartender.
After Reggie harasses the hangout with Jack watching him, the bartender finally tells Reggie how to get to the apartment that Ganz's girlfriend Sally and Billy's girlfriend Casey live in. The apartment is on top of the Win Sun jewelry store in the Chinatown section of San Francisco. Jack and Reggie visit Casey and Sally, but get nothing out of them.
Back at the car, Jack, who knows Ganz is after something, demands that Reggie tell him what Ganz is after. Because Reggie has refused to tell Jack, Jack starts a fight with Reggie. After the fight, Reggie tells Jack that Ganz and Billy are after $500,000 that is in the trunk of Reggie's car, which is in a parking garage.
Reggie and his partners -- Ganz, Billy, Luther, and Henry -- had robbed a drug dealer of the $500,000 during a drug sale, and then Ganz turned around and betrayed Reggie.
Jack and Reggie head out to the parking garage, and they park across the street from the parking garage. On the next morning, Jack and Reggie see Luther, who has been released from jail, going into the parking garage.
A few minutes later, Luther emerges with Reggie's car. It seems that Ganz has promised that Rosalie will be safe if Luther gets the money for Ganz. Jack and Reggie chase Luther to a subway station, where Ganz and Billy are waiting. Luther escapes with the money, and Billy kills a cop.
That night, Jack is at his desk at the police station, and Reggie is at Vroman's, a place where people go to dance. When Jack calls Reggie, who answers on a payphone, Reggie tells Jack where he is, and Jack races to Vroman's to talk to Reggie, who is with a woman named Candy.
Jack gives Reggie $20 so Reggie can go to the hotel across the street and have sex with Candy. Just as Reggie and Candy get out the front door of Vroman's, Reggie sees Luther board a bus driven by Billy. Reggie races back inside, and tells Jack. Jack and Reggie get in Jack's car, and in the bus, Luther gives Ganz the money, and then Ganz shoots Luther dead.
Jack and Reggie then pull up beside the bus, and have a gunfight with Ganz. After Billy causes Jack and Reggie to crash into a showroom at a car dealership, Haden chews Jack and Reggie out. Later, Jack calls Kehoe, who hasn't heard anything on where Ganz may be.
Jack thinks Ganz and Billy may be at Casey and Sally's apartment, so Jack and Reggie head back to the apartment, where Reggie finds Billy, and he shoots Billy dead. Ganz emerges from a room, and opens fire. Reggie and Jack chase Ganz out of the apartment and into a maze of alleys, where Ganz grabs Reggie and puts a gun to Reggie's head.
Jack steps into the alley, and fires a shot that blows Ganz away from Reggie, and then when Ganz starts charging towards Jack, Jack fires six more shots, killing Ganz. Later, Jack lets Reggie have sex with Candy at her apartment. Jack shows Reggie his money in his car and tells him, it'll be there waiting for him when he comes out. He then drives away, presumably to take Reggie back to the prison.