Once Upon a Time in Mexico (also known as Desperado 2) is a 2003 American contemporary western action film written, directed, produced, photographed, scored, and edited by Robert Rodriguez. It is the third and final film in Rodriguez's Mexico Trilogy, and it is a sequel to 1993's El Mariachi and 1995's Desperado. The film features Antonio Banderas in his second and final performance as El Mariachi. In the film, El Mariachi is recruited by CIA agent Sheldon Sands (Johnny Depp) to kill Armando Barillo (Willem Dafoe), a Mexican drug lord who is planning a coup d'état against the President of Mexico. At the same time, El Mariachi seeks revenge against a corrupt general responsible for the death of his wife, Carolina (Salma Hayek).
It was Rodriguez' first big budget film to be shot in digital HD. Once Upon a Time in Mexico received positive reviews but was criticized for reducing its protagonist to an almost secondary character in his own trilogy and for having a convoluted plot. In the special features of the film's DVD, Rodriguez explained this was intentional, as he wanted this to be his The Good, the Bad and the Ugly of the trilogy. Once Upon a Time in Mexico grossed $98 million.