Roger Ebert described the film as depicting a culture in which "men of poor breeding lived and worked together in desperate poverty of mind and body, and were so enclosed inside their roles that they hardly knew each other at all."
Josephine Monaghan (Amis) is a young society woman who is seduced by her family's portrait photographer, and as a result, bears an illegitimate child. She is expelled from her family and home in disgrace, and with no other resources, she leaves her newborn son under the care of her sister and heads West.
On the road, Josephine discovers that her options are very limited. As a single woman traveling alone, she is viewed with suspicion, or as sexual prey for any man. She assists a traveling salesman (René Auberjonois) who subsequently tries to sell her services as a whore to passing strangers. Seeing it as her only protection, Josephine scars her face, and begins to dress as a man – thus becoming "Jo."
At a mining camp in Ruby City, she meets Percy (McKellen) who takes her under his wing. Percy recommends Jo for a job at the stable, and teaches her about how to survive in the frontier. But Percy nurses a deep suspicion of women, viewing them to be "more trouble than they are worth." He later demonstrates his misogyny by slashing the face of a prostitute who refuses to give him oral sex.
Jo no longer feels safe with Percy or her secret, so she accepts a job herding sheep, and heads for the mountains. After returning in the spring, Percy gives Jo a letter for her that he had received months earlier. The letter is from Jo's sister, and Percy having opened it, now knows he is a she. He is furious at being made a fool of by a woman and "a whore at that," referring to the mention of her son in the letter. He attacks and tries to rape Jo, but she draws her gun and subdues him. Largely ostracized by the town's people since the incident with the prostitute, Percy promises Jo he will not share her secret if she finances his journey out of the territory. She agrees, though swears to him she will find him and kill him if he breaks his silence.
For five years she works as a shepherd, braving the deadly winters alone to the worry of her employer, Frank Badger (Hopkins), who has taken a liking to the "young man" he nicknames "Little Jo." When Jo has enough money saved, she quits Badger, and buys her own homestead.
While frequently viewed as "peculiar", Jo is clearly educated, and earns the respect of the people in Ruby City and the surrounding territory. A local girl, Mary, (Graham) has her eye on Jo. Blind to the truth, most hope the two will court. However, Mary ends up wedding her cousin, Lucas Brown, soon after Jo returns from her first winter as a sheep herder.
One day in town, Jo comes across a mob about to lynch a Chinese laborer for trying to "take our jobs." Jo intervenes, and Badger insists the "chinaman", Tinman Wong (David Chung), go to live with Jo to help with the homestead.
Tinman accompanies Jo to the homestead, and takes on the duties of cook and housekeeper. Though he seems slow-witted, Jo is not happy at having company forced upon her, and is afraid he will discover she is not a man. She keeps as much distance as possible. But Tinman easily discovers the truth about Jo, and in doing so, reveals he is far more intelligent than he has pretended to be—he, too, has been masquerading for his own safety. Jo drops her guard and the two begin a love affair.
A feud begins to brew between the sheep herders and cattlemen who are moving into the territory. The Western Cattle Company wants to buy up all the land in the area, and they kill anyone who does not comply. One by one, the sheep herders give in, or are murdered by masked gunmen. Jo has witnessed the brutal murders of too many of her friends, and the violence that will be necessary to win this kind of fight goes against her gentle nature. This is a masculine quality that goes beyond her ability to "pass," so Jo dons a dress once again in a feeble effort to step back into a more traditionally feminine role. Tinman argues that it will be impossible for her to go back being the society woman, urging her to keep the homestead, and stand against the cattlemen in the upcoming election. Jo will not be swayed, and meets with the representative from the cattle company, Henry Grey (Anthony Heald) to tell him she will sell.
Tinman falls ill, and Jo summons Badger's wife (Snodgrass), who practices folk medicine, to tend him. Badger comes along, and is furious when Grey arrives with his wife so that Jo can sign the final papers for the sale of the homestead. Feeling betrayed by Jo for helping the cattle company to "squeeze me," Badger hits Jo, proclaiming, "By God, boy! I thought you'd amount to something."
As Grey prepares the papers inside, Jo watches his wife who, through the warped glass, is visually reminiscent of Jo when she was a woman of society. In an instant, Jo changes her mind and refuses to sell to Grey, who leaves in disgust issuing less than veiled threats.
Tinman recovers, and on election day, Badger and Jo ride to Ruby City but are met by several of Grey's masked gunmen. Badger shoots one of the gunmen, but is wounded, so it is up to Jo to finish the fight. She kills the two remaining men, but the pain of the act of killing is clearly indicated on her face.
The plot jumps to many years later, after Tinman Wong has died. Jo collapses while fetching water, and Badger finds her in bed, near death. He takes her in his wagon to the Ruby City doctor, but she is dead before they arrive. As Badger buys rounds of drinks at the saloon in memory of Little Jo, the undertaker rushes in with his shocking discovery—Little Jo was a woman. The town elders rush back to the undertaker's to inspect. All stand around the preparation table in shock, all except Mrs. Addie (Cathy Haase), the saloon owner, who laughs and laughs.
Badger is furious at the betrayal by his friend, and because Jo "made a fool out of me." He goes back to her homestead, and as he tears the place apart in anger, comes across the letter from her sister, and a picture of her as she lived as a woman. In town, the people tie Jo's dead body to her horse for a photograph.
The final shot is of the newspaper story with the before-and-after photographs, and the headline, "Rancher Jo Was a Woman."Suzy Amis as Josephine "Jo" Monaghan
Bo Hopkins as Frank Badger
Ian McKellen as Percy Corcoran
David Chung as Tinman Wong
Heather Graham as Mary Addie
René Auberjonois as Streight Hollander
Carrie Snodgress as Ruth Badger
Anthony Heald as Henry Grey
Melissa Leo as Beatrice Grey
Sam Robards as Jasper Hill
Olinda Turturro as Elvira
Ruth Maleczech as Shopkeeper
Jeffrey Andrews as Sam
Cathy Haase as Mrs. Addie
Peadair S. Addie Sr. as Mr. Addie
Renée Tafoya as Miss J.B. Tyler, photographer.
Dennis McNiven as Mortician
Vince O'Neil as Amos Monaghan
The film has been criticized for reinforcing a feminized image of Asian males in American mass media.
A musical adaptation, by Mike Reid and Sarah Schlesinger, debuted as part of the Steppenwolf Theater Company's 2000-2001 season.