An unnamed American man (Steve Buscemi) at a bar in Mexico tells the story of how he witnessed a massacre in another bar committed by a man (Antonio Banderas) with a guitar case full of guns. The bar's patrons perk up when the man mentions that the mariachi was looking for a man named "Bucho." Later the American man visits the Mariachi telling him that the bar is a good starting place to look for Bucho. Meanwhile, the bartender alerts Bucho that a "man in black" is looking for him and Bucho increases his security.
El Mariachi arrives in town, and befriends a young boy. Entering the bar he is recognized by the patrons, employees of Bucho, and engages in a gunfight with them, killing them all. As he exits, wounded, his is tailed by the sole survivor. Stumbling into a bookstore, he passes out from his wounds.
When he wakes up, his wounds are being tended by Carolina (Salma Hayek) the owner of the bookstore. Later he meets with his American friend at a nearby church but as they exit they are attacked by the assassin Navajas (Danny Trejo), who kills the American and wounds El Mariachi with a set of throwing knives. As El Mariachi runs in a back alley for cover, Navajas is interrupted by the presence of Bucho's limo and is killed by Bucho's bodyguards before they realize that he had been sent by Bucho's superiors to kill El Mariachi.
The next day, El Mariachi and Carolina are ambushed by Bucho's men, who were sent to kill them both. When Bucho's men set the bookstore on fire, the couple escape through the rooftops. After finding cover, El Mariachi grabs one of his guns and aims at Bucho from outside his limousine, but suddenly hesitates and puts his gun away upon seeing his face. Carolina asks him why he didn't shoot, but he does not reply. Later, at a hotel, El Mariachi tells Carolina she can leave the village and use the money she stashed to start a new life, but she tells him that the money was hidden in the books that were burned. He then decides to call his friends Campa (Carlos Gallardo) and Quino (Albert Michel, Jr.), who meet up with him and go to a deserted part of town for a showdown with Bucho's men. Campa and Quino are killed in the battle, but the three mariachis manage to wipe out the thugs. However, El Mariachi discovers that the little boy from earlier on has been shot. He and Carolina rush the boy to the hospital before heading for Bucho's ranch. Upon their arrival, it is revealed that El Mariachi and Bucho are brothers; Bucho's real name is César and he addresses El Mariachi as Manito (likely a contraction of hermanito, which means "little brother"). Bucho, however, is angered by Carolina's betrayal and threatens to kill her to even the score with El Mariachi killing his men. El Mariachi, unable to bear another love's death, ejects his pistols from his sleeves and shoots Bucho dead.
Back at the hospital, the couple discover that the boy will recover from his wounds. El Mariachi tells Carolina he will thank her and leaves. Then, as he is walking in the desert, Carolina drives by him and asks him to join her. He throws away his guitar case before he and Carolina drive off, but then stop and go back to pick it up ("just in case") before driving away into the sunset.
This film is a sequel to the independent movie El Mariachi. Desperado helped to enhance the fame of Antonio Banderas and introduced Salma Hayek to American audiences.
Raúl Juliá was originally cast as Bucho but died before production began on October 24, 1994.