NYPD detective Billy Taggart (Mark Wahlberg) is involved in a nighttime shooting, then is brought up on charges. Captain Carl Fairbanks (Jeffrey Wright) and Mayor Nicholas Hostetler (Russell Crowe) discuss the case as protesters picket the courthouse. Hostetler mentions they have new evidence and next the judge announces the charges are dropped. The Mayor summons Taggart to his office where he seems sympathetic.
Seven years later Billy is a struggling PI. He spends a day calling clients to get them to pay up. His assistant, Katy Bradshaw (Alona Tal), tells him the Mayor is calling. Arriving at City Hall, the Mayor is watching a TV news item on his election opponent Jack Valliant (Barry Pepper), apparently the two are close in the polls. Hostetler makes small talk with Billy then gets down to business, he wants evidence his wife is having an affair and he needs the prof before next Tuesday's election. Billy accepts the case and the $25,000 down payment.
Billy begins to tail the mayor's wife, Cathleen Hostetler (Catherine Zeta-Jones). Helped by Katy, Taggart quickly learns that Cathleen is seeing Paul Andrews (Kyle Chandler), Jack Valliant's campaign manager.
Billy goes to dinner with his girlfriend Natalie Barrow (Natalie Martinez) and her film friends. Natalie reveals they have dated for seven years, ever since her 16 year old sister was raped and murdered. Billy was the policeman on the case and was very supportive to her family.
Jack and Paul do prep for the upcoming debate. Jack, a rich liberal, is frustrated and wants some hard evidence to prove the Mayor's corrupt, Paul tries to tell him even without the evidence he has a good chance. Paul has an unnamed source who may get the info in time.
Hostetler plays racquetball with Sam Lancaster (Griffin Dunne), the owner of a construction company and campaign supporter, they discuss the election and the billions involved.
Taggart attends a fundraiser for Hostetler's campaign at the Roosevelt Hotel, he meets another ex-cop Murdock who says he is security for the Lancaster family. Taggart is then called to a suite where Cathleen reveals that she knows Taggart is following her, and advises him not to become involved with Hostetler. However, in the hotel bar Hostetler gets the envelope with the pictures that Taggart has taken of Cathleen meeting with Andrews, and pays Billy his remaining $25,000.
At the Mayoral debate the two men discuss the recent sale of the public Bolton Village projects to help the city balance the budget. Hostetler successfully declares he has been slowly fixing a broken city against Valliant's plan for higher taxes.
Billy attends the premiere of Natalie's first film. After an explicit sex scene Billy is very uncomfortable. At the after party he glowers and starts drinking, Natalie tries to stop him. They argue in public and Billy accuses her of sleeping with her co-star. He leaves angrily and goes on a bender. Katy calls to tell him something.
Billy arrives at a murder scene, his former partner is there and allows him behind the tape. Andrews is dead outside his apartment. Commissioner Fairbanks arrives and interrogates Taggart, who admits he had been hired by Hostetler. They talk inside the apartment with a drunk and weepy Valliant, who reveals that Andrews was meeting Todd Lancaster (James Ransone), son of Hostetler's associate, contractor Sam Lancaster. Fairbanks has Taggart secret Valliant away and the police announce they have no clues. Valliant admits to Taggart he loved Andrews.
Taggart then meets with Cathleen, who reveals that Andrews was an old friend who was going to provide her with information about Hostetler's plans for the Bolton Village Housing Project. Hostetler wanted to find out Cathleen's source, and manipulated Taggart to lead him to discover who it was. Cathleen wanted to use the info to get a good divorce settlement.
Billy visits the Bolton village apartment complex and meets Natalie's parents, still living there. The father feels the murdered daughter is still there in spirit, the mother wants to know what Billy thinks of Natalie's movie.
Taggart investigates Sam Lancaster's construction business, and learns that Hostetler has sold the Bolton Village in order to have it demolished and replaced by office buildings, leaving hundreds of impoverished people homeless for his own profit. However, he is attacked by a dark hooded man, who destroys the evidence he has acquired. After a car wreck Biily phones Fairbanks and gets the Roosevelt Hotel. Going there Taggart meets Fairbanks and learns he has done well for himself and is actually the one seeing Cathleen.
Taggart then locates Todd Lancaster and roughly interrogates him. Todd reveals that he disagreed with Hostetler's plans and intended to give his old college mentor Andrews the Hostetler Lancaster partnership contract as evidence. Murdock arrives with gun drawn but Taggart gains the upper hand. Taggart meets Hostetler, with his phone recording app on, and demands the Mayor resign, however; Hostetler turns the tables and reveals a videotape from seven years ago, it shows Billy did gun down an unarmed Mikey Tavarez, the suspect in the Yesmina Berroa rape and murder. Hostetler demands all the evidence be turned over the next morning or else.
Billy goes home to have a hot bath. Later he meets Fairbanks and plays the recording. Fairbanks has Hostetler arrested at his election eve party. The next day as Fairbanks comes to take Billy into custody from a bar, Katy arrives to give him a pre-paid phone card.