"Boss" Spearman (Duvall) is an open range cattleman, who, with hired hands Charley (Costner), Mose (Benrubi) and Button (Luna), is driving a herd cross country. Charley is a former soldier who fought in the Civil War and feels guilty over his past as a killer.
Boss sends Mose to the nearby town of Harmonville for supplies. The town is controlled by a ruthless Irish immigrant land baron, Denton Baxter (Gambon), who hates open-rangers. Mose is badly beaten and jailed by the marshal, Poole (Russo). The only friendly inhabitant is Percy (Jeter), a livery stable owner.
Boss and Charley become concerned when Mose does not return. They retrieve him from the jail but not before getting a warning from Baxter about free-grazing on his land. Mose's injuries are so severe that Boss and Charley take him to Doc Barlow (McDermott). There they meet Sue Barlow (Bening). Charley is attracted immediately, but assumes that Sue is the doctor's wife.
After catching masked riders scouting their cattle, Boss and Charley sneak up on their campfire in the night, and disarm them. At the same time, another attack results in Mose's death. Button is badly injured and left for dead. Charley and Boss vow to avenge this injustice. They leave Button at the doctor's house and go into town, where they lock Poole in his own jail. Boss knocks him out with chloroform he has stolen from the doctor's office. The deputies are locked up as well.
Charley learns that Sue is the doctor's sister, not his wife. He declares his feelings for her, and she gives him a locket for luck. Charley leaves a note with Percy, in which he states that if he should die, money from the sale of his saddle and gear are to be used to buy Sue a new tea set.
Boss and Charley are pitted against Baxter and his men. Charley shoots Butler (Coates), the gunman who shot Button and killed Mose. An intense gun battle erupts in the street, with Boss, Charley and Percy outnumbered before the townspeople begin to openly fight against Baxter. After an intense firefight, Baxter's men are dead and Baxter ends up wounded and alone, trapped in the jailhouse. Boss rushes to the jail, mortally wounding Baxter.
Sue's brother tends to the wounded townspeople and open-rangers. Charley speaks to Sue in private, telling her he must leave. She counters that she has a "big idea" about their future together and that she will wait for him to return. He does return, and proposes to Sue. Charley and Boss decide to give up the cattle business and settle down in Harmonville, taking over the saloon.