William Munny (Clint Eastwood) is a widower with two young children. He was once a very vicious gunfighter, but after marrying, gave up gunfighting, drinking, and most other vices. His wife died of smallpox in 1878, but he continues to try to eke out a living with his children on their hog farm, and to try to be the kind of man he believes his late wife would want him to be. It is now 1880.
The town of Big Whiskey, Wyoming is ruled rather arbitrarily by a sheriff named Little Bill Daggett (Gene Hackman). Two cowboys, Davey (Rob Campbell) and Mike (David Mucci) are spending their leave at a brothel owned by Skinny Dubois (Anthony James). One of the women, Delilah, makes an offhanded comment that Mike perceives as an insult, so he attacks her with a knife, scarring her face. Skinny and the de facto madam, Strawberry Alice (Frances Fisher) hold them until Little Bill can arrive. The women want Davey and Mike to hang, but Little Bill decides that since they did not murder Delilah, they should be horse-whipped instead. However, Skinny is more concerned with potential loss of business due to Delilah's disfigurement. So Little Bill decrees that instead of being horsewhipped, the men will have to give Skinny some horses. This outrages the women even more, and afterward they meet privately and pool all their resources to offer a reward to anyone who will kill the two attackers.
We meet Munny on his farm trying to deal with some sick hogs. It quickly becomes clear that he is not a very good hog farmer, as he repeatedly falls in the mud when trying to grab a hog. In the midst of this he has a visitor, a young man calling himself the Scofield Kid (Jaimz Woolvett), who knows Munny by reputation and would like his help in killing Davey and Mike in return for half the reward money. Munny makes it clear that he is not interested because, since marrying his late wife, he doesn't do the things he used to do anymore. But after the Kid leaves, Munny goes back to his bumbling attempts at tending hogs, and begins to have second thoughts. He sets a can on a tree stump and begins firing at it with his pistol, without hitting it. Finally he goes in the house and gets his rifle, and blows the can away on the first shot.
Back in Big Whiskey, Davey and Mike show up with the horses for Skinny. The women throw stones and horse manure at them. Mike has never shown any remorse at any point, but Davey seems genuinely sorry about what happened to Delilah. He pointedly tells Skinny that one of the horses is not for him, and then offers it to Delilah. The women only throw more manure.
Realizing that he will need help in the tracking down the wayward cowboys, Munny decides to contact his former partner, Ned Logan (Morgan Freeman). He says goodbye to his kids, telling them if they need anything to see Ned's common law wife, Sally Two Trees. After several bumbling and unsuccessful attempts to mount his horse, he finally mounts successfully and rides to Ned's. Sally, apparently recognizing that whatever Munny has in mind cannot end well, just glares at him without speaking the entire time he is there. If looks could kill, not only Munny and Ned but the entire movie audience would be dead by the end of the scene. But as it is, the two men ride off in pursuit of the Kid. Eventually they catch him, and soon discern that he is severely nearsighted and can't see a target more than 50 yards away.
The first to arrive in Big Whiskey in pursuit of the reward is a gray-haired Englishman known as English Bob (Richard Harris). We first meet him traveling on a train with his biographer, named Beauchamp (Saul Rubinek). President Garfield has just been shot (which, of course, occurred in 1881, meaning that some months have passed since the original attack on Delilah), and Bob is lecturing his fellow-passengers on the benefits of monarchy over democracy (despite the Russian Tsar also being assassinated earlier that same year). He and Beauchamp arrive in Big Whiskey, where Little Bill catches him concealing a gun. He brutally beats and kicks Bob until he is nearly unconscious, then throws both him and Beauchamp in jail. At the jail, Little Bill debunks many of the stories Bob has told Beauchamp about his exploits. Soon Beauchamp is out of his cell and working as Little Bill's biographer rather than Bob's. Little Bill finally puts Bob on a train out of town. Munny and his companions see the train carrying English Bob go by as they approach town.
A torrential downpour begins, and by the time the Munny party reaches town, Munny is sick with fever. Arriving at the saloon, Ned and the Kid go upstairs to engage the services of the prostitutes, but Munny doesn't do that sort of thing anymore and remains downstairs. Little Bill sizes Munny up as an out-of-towner after the reward money, and beats and kicks him in a similar way to what he did to English Bob, has him thrown out into the street, and sends his deputies upstairs after Ned and the Kid. Ned and the Kid escape through a window, manage to get Munny onto his horse, and ride out of town, where Ned nurses Munny back to health with the help of some of the prostitutes.
By the time Munny has regained his health, the rain has stopped but there is snow on the ground. In the next scene the snow is gone, meaning some time has been elapsing as Munny's partners have scouted out their targets. In that next scene, we see Davey with a group of cowboys chasing a calf. A shot rings out, hitting Davey's horse, which falls over, breaking the man's leg and pinning him to the ground. Ned fired the shot, but now he can't bring himself to finish the man off, and the Kid can't see that far, so Munny fires several shots and finally hits him. As Davey lies dying, he complains of being thirsty. Munny calls out to the other cowboys to give the man a drink, and promises not to shoot. They do, and Munny is true to his word.
Ned has had enough of killing and leaves his companions to return home, but is captured by Little Bill's men, and we see him being interrogated by Little Bill. Men are also assigned to protect Mike. Munny and the Kid wait outside the house where Mike and his guards are holed up. When Mike comes out to use the outhouse, the Kid waits until he is finished and then shoots him. But the Kid can't deal with the fact that he has killed a man (he has boasted repeatedly of having killed five men, but now admits that this was his first), and resolves to never kill again, telling Munny, "I'm not like you." Munny has him drink some whiskey, but it doesn't help.
One of the prostitutes brings the reward money and informs them that Ned has been killed, after revealing Munny's identity. Munny sends the Kid home with the reward money, telling him to leave his and Ned's shares with his children and take the rest and use it to buy some good spectacles. He then rides toward town, drinking whiskey from a bottle as he goes. Outside the saloon, he sees Ned's body upright in an open casket, with a sign saying that this is what happens to assassins in this town.
Munny enters the saloon, where most of the townsmen have gathered. He asks who owns the establishment, and when Skinny identifies himself, Munny tells the men near him to move away, and then shoots him. Little Bill calls him a coward for shooting an unarmed man, but Munny replies, "He should have armed himself, if he's going to decorate his saloon with my friend." He then tells those near Little Bill to move away. His shotgun misfires, but he throws it at Little Bill, draws his pistol and shoots him, and shoots several other men attempting to draw guns on him; some of them get shots off before Munny kills them, but none hit him.
He then tells everyone who doesn't want to be killed to leave, and all who are able to leave do so. He goes to the bar and helps himself to more whiskey. Beauchamp was not able to leave because of a body lying on top of him. Munny has him give him a rifle lying nearby, which he loads. Beauchamp tries to engage him in conversation about gunfighting, but Munny's response frightens him into leaving as well. Little Bill turns out to still be alive, but Munny hears him cock his pistol, and steps on his hand before he can get a shot off.
As Munny aims his rife at Little Bill, the latter complains that he doesn't deserve this. Munny replies, "'Deserves' has nothing to do with it." Little Bill then says, "I'll see you in hell, William Munny." Munny simply replies, "Yeah," and shoots him. As he walks to the saloon door, one of the men he shot previously moans in pain, and he shoots him again.
At the door, he announces that he is coming out, that he will kill anyone he sees, and if anyone shoots at him, he will kill not only the shooter but his wife and all his friends and burn his house down. He walks to his horse, and no one shoots. He mounts his horse and as he rides past Ned's body, he announces that if they don't bury Ned right, or if they harm the prostitutes in any way, he'll come back and kill every man in the town.
As the closing credits roll, we learn that Munny subsequently moved with his children to San Francisco, where he "prospered in dry goods."