Once Upon a Time in Mexico (also known as Desperado 2) is a 2003 American action film written, produced, edited, cinematographied, scored, and directed by Robert Rodriguez. It is the third and final film in Rodriguez's Mexico Trilogy, and is a sequel to El Mariachi and 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).