Criminals Robert Trench (Denzel Washington) and Michael Stigman (Mark Wahlberg) are questioned by the United States Border Patrol after a meeting with drug lord Manny "Papi" Greco (Edward James Olmos) in Mexico. Unknown to Stigman, Trench is an undercover DEA agent and reports to his superior, Jessup (Robert John Burke), that he failed to acquire cocaine from Greco that they could use as evidence to convict him.
Against Jessup's orders, Trench decides to remain undercover and assist Stigman in robbing $3 million - stashed in the vault of the Tres Cruces bank - from Greco, so they can prosecute Greco for money laundering. Trench has a rendezvous with fellow DEA agent and former lover, Deb Rees (Paula Patton), who is also seeing another man, while Stigman, an undercover Intelligence Specialist with the Navy SEALs, meets with his commanding officer, Harold Quince (James Marsden), who instructs Stigman to kill Trench so the Navy can use the stolen money to fund unauthorized covert operations.
During the heist, Trench and Stigman are surprised to find $43.125 million in the vault instead of the expected $3M. After the heist, Stigman follows orders to betray Trench and escape with the money, managing to pull his gun right as Trench is about to pull his own. Unwilling to kill Trench, Stigman wounds Trench in the shoulder, and then sees Trench's DEA badge. Not sure what to think of Trench, he leaves Trench behind in the desert and leaves with the money. Stigman meets with Quince, and after learning what happened, Quince attempts to have Stigman killed. Stigman escapes after learning the money will be transferred to a Navy base in Corpus Christi. Meanwhile, a man named Earl (Bill Paxton) aggressively interrogates the Tres Cruces bank manager about the stolen money and also questions the vet who treated Trench's wounds as he tracks Trench's movements.
However, Trench goes to Stigman's apartment to find out where he took the money, only to have Stigman contact him from a sniper's post across the street. A hit squad sent by Quince attacks the apartment but Trench and Stigman escape. Trench visits Jessup to tell him what happened, but Earl and his men are there waiting for him. Earl kills Jessup, frames Trench for the murder and lets him go, making a deal that if Trench returns the $43 million he will be cleared. Trench and Stigman kidnap Greco and interrogate him in the garage at Deb's house. They find out Earl is a black ops operative to whom Greco reports, and that the money they stole belonged to the CIA.
The garage is attacked by another hit squad, led by Quince, and the trio ends up being captured by Greco and taken to his farm in Mexico. After beating them and receiving a visit from Earl, Greco gives the pair 24 hours to steal the money from the Navy and return it to him, or Deb will die.
At the base, Trench infiltrates Quince's office, only to discover Quince is Deb's boyfriend, and they had planned to steal the money for themselves. Meanwhile, Stigman asks Admiral Tuway (Fred Ward) for help. Tuway orders Quince's arrest, but disavows Stigman to prevent the scandal from tarnishing the Navy's reputation. Quince evades arrest, as does Stigman. Unable to find the money, Trench is too late to prevent Greco from killing Deb. He later realizes that the money is in a motel room that he and Deb frequented and goes to help Stigman, who had returned to Greco's farm alone to exact vengeance.
There, Stigman is surrounded by Greco's men until both Quince and Earl intervene. Trench arrives in a car filled with money, and then blows up the car, scattering the money everywhere, which leads to a massive shootout. During a standoff among Quince, Earl, Trench, and Stigman, Earl reveals that the CIA has 20 other secret banks, and the loss of the $43.125 million is only a minor setback. Signaling Stigman with a phrase from an earlier conversation, Stigman shoots Earl, and Trench shoots Quince. Trench and Stigman kill Greco and the duo escapes, but not before Trench shoots Stigman in the leg as payback for shooting him in the desert. While planning to continue to take down the CIA's secret banks and sabotage their black operations, Trench reveals to Stigman that he did not blow up all the money and had some stashed away.
Denzel Washington as DEA Special Agent Robert "Bobby" Trench
Mark Wahlberg as USN Petty Officer Michael "Stig" Stigman
Paula Patton as DEA Special Agent Deb Rees
Bill Paxton as Earl
James Marsden as USN Lieutenant Commander Harold Quince
Fred Ward as USN Rear Admiral Tuwey
Edward James Olmos as Manny "Papi" Greco
Robert John Burke as DEA Special Agent Jessup
The film is an adaption of the comic series of the same name by Steven Grant. However, it has been noted by the Observer that it can also be seen as evocative of the 1973 thriller Charley Varrick. The pictures have similar plots and in both cases the bank being robbed is in Tres Cruces, New Mexico.
Filming took place in New Orleans, Louisiana and areas throughout New Mexico. While filming in Louisiana, the production spent $57.5 million in the state and received a $17.6 million subsidy under the state's film incentive program. 2 Guns marked the second collaboration for Wahlberg and Kormákur: they first worked together on the film Contraband. It also marks the second collaboration between Washington and Patton after having starred together in Déjà Vu.