The novel is framed by the literary device of an extended flashback. The prologue, which is neither named as such nor numbered, opens with an unnamed male narrator spending a winter in Starkfield while in the area on business. He spots a limping, quiet man around the village, who is somehow compelling in his demeanor and carriage. This is Ethan Frome, who is a local fixture of the community, having been a lifelong resident. Frome is described as "the most striking figure in Starkfield", "the ruin of a man" with a "careless powerful look…in spite of a lameness checking each step like the jerk of a chain". Curious, the narrator sets out to learn about him. He learns that Frome's limp arose from having been injured in a "smash-up" twenty-four years before, but further details are not forthcoming, and the narrator fails to learn much more from Frome's fellow townspeople other than that Ethan's attempt at higher education decades before was thwarted by the sudden illness of his father following an injury, forcing his return to the farm to assist his parents, never to leave again. Because people seem not to wish to speak other than in vague and general terms about Frome's past, the narrator's curiosity grows, but he learns little more.
Chance circumstances arise that allow the narrator to hire Frome as his driver for a week. A severe snowstorm during one of their journeys forces Frome to allow the narrator to shelter at his home one night. Just as the two are entering Frome's house, the prologue ends. We then embark on the "first" chapter (Chapter I), which takes place twenty-four years prior. The narration switches from the first-person narrator of the prologue to a limited third-person narrator.
In Chapter I, Ethan is waiting outside a church dance for Mattie, his wife’s cousin, who has for a year lived with Ethan and his sickly wife, Zeena (Zenobia), in order to help out around the house and farm. Mattie is given the occasional night off to entertain herself in town as partial recompense for helping care for the Fromes, and Ethan has the duty of walking her home. It is quickly clear that Ethan has deep feelings for Mattie. Passing the graveyard, he thinks in an intense moment of foreshadowing that, "We'll always go on living here together, and some day she'll lie there beside me." It also becomes clear that Zeena has observed enough to understand that he has these feelings and, understandably, she resents them.
When Zeena leaves for an overnight visit to seek treatment for her various complaints and symptoms in a neighboring town, Ethan is excited to have an evening alone with Mattie. During this evening, the narrator reveals small actions that show that they each have feelings for the other, including a lingering of touching hands on the milk jug, although neither openly declares their love. Mattie makes supper and retrieves from a high shelf Zeena's treasured pickle dish, which Zeena, in a symbol of her stingy nature, never uses, in order to protect it. Mattie uses it to present Ethan with a simple supper, and disaster ensues when the Frome's cat jumps on the table and knocks it off, shattering it beyond repair. Ethan tries to help by setting the dish's pieces neatly in the cupboard, presenting the false impression of wholeness if not examined closely, with plans to purchase some glue and fix it as soon as he can.
In the morning Ethan’s hopes for more private time with Mattie are foiled by the presence of his hired man. Ethan then goes into town to buy glue for the broken pickle dish, and upon his return finds that Zeena has also come home. Zeena retreats upstairs, proclaiming her illness, and refusing supper because she is not hungry. There, she informs Ethan that she plans to send Mattie away and has already hired another girl to replace her, claiming that she needs someone more efficient because her health is failing more rapidly than ever.
Ethan is angry and frustrated to the point of panic by the thought of losing Mattie, and he is also worried for Mattie, who has no other place to go and no way to support herself in the world. He returns to the kitchen and joins Mattie, and tries to eat, but he is distraught and suddenly blurts out Zeena’s plans to send Mattie away. Mattie reacts with shock but rapid acceptance, trying to calm Ethan, while Ethan becomes more agitated and begins to insist that he will not let her go. Ethan kisses her. Moments later, they are interrupted by Zeena, who has decided that she is hungry after all. After supper, Zeena discovers the broken pickle dish and is heartbroken and enraged; this betrayal cements her determination to send Mattie away.
Ethan, miserable at the thought of losing Mattie and worried sick about her fate, considers running away with Mattie, but he lacks the money to do so. He feels that he cannot abandon Zeena because he knows that she would neither be able to run the farm nor sell it (the poor quality of the place has been discussed at several points in the story already). Every plan he thinks of is impossible to carry out, and he remains in despair and frantically trying to think of a way to change this one more turn of events against his ability to have a happy life.
The next morning, Zeena describes her specific and imminent plans for sending Mattie on her way. Panicked, Ethan rushes into town to try to get a cash advance from a customer for a load of lumber in order to have the money with which to abscond with Mattie. His plan is unhinged by guilt, however, when his customer’s wife expresses compassion, understanding, and empathy for Ethan's lot, which has involved the repeated duty to care for others, first his parents, then his sickly wife. He realizes that, of all people, he cannot cheat this kindly woman and her husband out of money, since she is one of the few people who have ever seemed to have seen or openly acknowledged Ethan's lifelong plight, as well as his honor in fulfilling his duties.
Ethan returns to the farm and picks up Mattie to take her to the train station. They stop at a hill upon which they had once planned to go sledding and decide to sled together as a way of delaying their sad parting, after which they anticipate never seeing each other again. After their first run, Mattie suggests a suicide pact: that they go down again, and steer the sled directly into a tree, so they will never be parted and so that they may spend their last moments together. Ethan first refuses to go through with the plan, but in his despair that mirrors Mattie's, he ultimately agrees, and they get on the sled, clutching each other. On the way down, a vision of Zeena's face startles Ethan into swerving a bit, but he corrects their course, and they crash headlong and at high speed into the elm tree. Ethan regains consciousness after the accident but Mattie lies beside him, "cheeping" in pain like a small wounded animal. Ethan is also injured, and the reader is left to understand that this was the "smash-up" that left Ethan with a permanent limp.
The final chapter or epilogue (again unnumbered like the prologue), switches back to the first-person narrator point of view of the prologue, as Frome and his visitor, the narrator, enter the Frome household two decades later. The narrator hears a complaining female voice, and it is easy to assume that it belongs to the never-happy Zeena, but in the final twist of the story, it emerges that it is in fact Mattie, who now lives with the Fromes due to having been paralyzed in the accident. Her misery over her plight and dependence has embittered and "soured" her, and, with roles reversed, Zeena is now forced to care for her as well as Ethan. Further illustrating the psychosomatic nature of most of Zeena's previous complaints, she has now found the strength through necessity to be the caregiver rather than being the invalid. In an agonizing irony, Ethan and Mattie have gotten their wish to stay together, but in mutual unhappiness and discontent, with Mattie helpless and paralyzed, and with Zeena as a constant presence between the two of them.