As the novel begins, Joe and his father, Bazil, who works as a tribal judge, are weeding saplings out from the foundation of their house. After a while, they realize that Geraldine, Joe’s mother, has not yet come home. Joe and Bazil decide to go look for her. They are on the highway when Geraldine speeds past them going back to the house. Joe and Bazil, relieved, head home, only to find Geraldine still sitting in her car, covered in vomit and blood and smelling like gasoline. Bazil, immediately realizing that something is wrong, drives Geraldine to the hospital with Joe. At the hospital, Joe slowly begins to understand that Geraldine has been violently raped. The police take statements from Geraldine and Bazil, and Geraldine has surgery before Geraldine, Joe, and Bazil go home.
The next week, Geraldine, who is terrified to go outside, stays in her bed all day while Joe and Bazil read to her and bring her food that Joe’s aunt Clemence has prepared. Curiously, Geraldine refuses to tell Bazil or law enforcement anything about the rape or the rapist, even though it seems like she knows his identity. As bedridden Geraldine struggles to heal physically and emotionally, Joe, feeling stressed out about the lack of progress on the case, distracts himself by hanging out out with his friends Cappy, Zack, and Angus. One night, Joe goes to Cappy’s house to help Cappy’s brother Randall run his sweat lodge. Joe and Cappy tend to the fire while the men inside sing traditional songs. Randall tells Joe that he saw a vision of a ghost standing over Joe in the flames, and he warns Joe to be careful.
At home the next week, Joe’s mother is still jumpy. Bazil brings home case files from his office that he thinks might shed light on Geraldine’s case, and he and Joe look through the files together. One of these cases refers to the adoption of Linda Lark by Betty Wishkob. Bazil marks this case as important.
When Joe gets free time, he, Cappy, Zack, and Angus try to investigate the crime. They go to the reservation’s round house and look for evidence. Joe finds the gas can that the attacker used to douse Geraldine with gasoline and Angus finds a pack of Hamm’s beers. The boys drink the beers even though they think they might be evidence. When Joe gets home, he eavesdrops on Bazil and Joe’s uncle Edward, who are talking about the possibility that Father Travis, the new Catholic priest in town, may have been the one to commit the crime. As Joe goes to bed that night, he suddenly remembers that, on the day of Geraldine’s attack, she had received a phone call and gone to her office, where she worked as the tribal enrollment specialist, in search of a file. As Joe falls asleep he sees a silvery spirit outside his window like the one that Randall saw in the sweat lodge. Joe immediately knows this is a ghost. When he asks Bazil about it the next day, Bazil tells him it could be a spirit from his future.
Joe and his friends go to mass to try to get a read on Father Travis, and this expedition turns into a sleuthing mission in which the boys wind up spying on Father Travis at his home. There, they see that Father Travis has such intense scarring on his genitals that he could not have raped Geraldine. Father Travis catches the boys spying and threatens them before finally letting them go. Joe finds out that Bazil, too, is on to a different suspect, and Bazil takes Joe with him to speak with Linda Lark. Linda tells them her life story, explaining how her mother, Grace Lark abandoned her as a baby because of her birth defect, so Betty Wishkob raised her. Years later, Grace Lark reconnected with Linda in order to try to convince Linda to donate her kidney to Linda’s twin brother Linden. Linda went through with the donation even though she found Linden, who was extremely cruel, to be absolutely repellant. Joe begins to understand that his father suspects Linden Lark to be the rapist.
One day after this conversation with Linda, Joe finds a doll in the reservation’s lake. When he takes off its head to pour out the extra water, Joe finds forty thousand dollars inside. He takes the money to his aunt Sonja, who works with Joe’s uncle Whitey at their local gas station. Sonja helps him deposit the money in a series of bank accounts for college, then buries the passbooks in the woods. Afterward, Sonja offers Joe a job at the gas station, which Joe immediately accepts, because he is extremely attracted to Sonja and wants to be near her. When Joe returns home that night, Bazil is talking with an FBI agent, and Joe tells them both about the gas can and beer that he and his friends found. Joe, feeling guilty about the money he is hiding, then tells them that, on the afternoon of Geraldine’s rape, Geraldine went to retrieve a file from her office.
When Bazil and Joe confront her about the file, Geraldine finally breaks down and tells them exactly what happened on the night of her rape, omitting only the attacker’s name. Geraldine, who received a phone call inquiring about a file, was abducted at her office, raped, and then taken to the round house, where Geraldine’s attacker was also holding another woman, Mayla Wolfskin, and her baby hostage. The attacker asked Mayla where “the money” was and threatened to kill Mayla and Geraldine by pouring gasoline on them and setting them on fire, but Geraldine escaped and ran to her car.
After Geraldine tells her story, Bazil takes her to a mental hospital so she can rest. Joe stays with Whitey and Sonja and goes to work at the gas station with them every day, cleaning up trash in the yard and changing tires. One day, Sonja goes to work wearing new diamond earrings, which makes Whitey suspect that Sonja is cheating on him. At the gas station, Joe pumps gas for a white man before he realizes, to his horror, that it is Linden Lark. That night, Whitey beats Sonja because he believes she was unfaithful to him, and Joe, who fancies himself in love with Sonja, tries to defend her. Sonja locks them in the bedroom for protection, and the next morning Joe quits his gas station job and goes to stay with Clemence. While Joe is staying at Clemence’s house, he sleeps in his grandfather Mooshum’s room. Mooshum tells a story in his sleep about wiindigoo justice, or the obligation to kill a wiindigoo, which is someone in Chippewa tradition who feeds on human flesh. The next day, Bazil, who has returned from the hospital with Geraldine, picks Joe up.
Joe goes out with Cappy, Angus, and Zack to the lake behind the church. They run into the church youth group, where Cappy becomes smitten with a teenaged missionary from Montana named Zelia. The boys attend the youth group two days in a row so Cappy can spend time with her. When Joe goes home that day, he asks Bazil again about the identity of Geraldine’s rapist, but Bazil refuses to tell him. The next day, Joe and his friends watch a search and rescue unit tow Mayla’s car out of the lake. In back of the car, Joe sees the same fabric that was used to dress the doll he found in the lake, and he knows that the doll and money were Mayla’s.
Joe asks Bazil again who Geraldine’s rapist was, and Bazil shows him a picture of Linden Lark, confirming Joe’s suspicions. However, Bazil says, the case against Linden is shaky, especially because they don’t know exactly where the crime took place, so they can’t establish its jurisdiction. Bazil tells Joe that Mayla’s child was found at a Goodwill and the governor of South Dakota, Curtis Yeltow, for whom Mayla worked as a high school student, tried to adopt her. Geraldine, satisfied that the child is safe, gives the file on Mayla to law enforcement, which reveals that Curtis Yeltow is the child’s father, and that Mayla and Curtis had an affair while Mayla was underage.
Bazil and Geraldine go to Bismarck to work on the case and Joe stays with Clemence again. While he is sleeping in Mooshum’s room, Mooshum tells another story about Nanapush and Akii, who build the reservation’s round house as a monument to the buffalo. A few days later, while Joe is still staying at Clemence’s house, Sonja shows up and Mooshum tries to rush Joe out. Sonja, who has come to give Mooshum a lap dance for his birthday, asks Joe to leave, but Joe refuses, saying that he will tell Whitey about the doll money Sonja has been hiding from him if Sonja doesn’t let him stay. Sonja dances for them, and afterward she angrily tells Joe that he is just like other men who do terrible things to women.
Joe goes to Cappy’s house and Cappy tells him that, in the graveyard on the night of Mooshum’s birthday, Cappy and Zelia had sex. Cappy is now heartbroken because Zelia has returned to Montana. Joe comforts Cappy and then goes home, where he learns that, because of the lack of evidence, Linden Lark was not charged for his crime. Geraldine screams. Joe yells at his father, saying that he has no authority as a tribal judge. Later that night, Bazil illustrates for Joe all of the legal disadvantages that he faces as a tribal judge and he explains that he is trying to combat these injustices for future generations.
The next day, Clemence tells Joe that Sonja left Whitey. Joe and Cappy dig up the passbooks that Sonja buried and find that Sonja has left Joe ten thousand dollars of the doll money and absconded with the rest.
Since Linden has been set free and Geraldine no longer feels safe outside her home, Bazil and Joe do the grocery shopping for her. One day, they see Linden Lark in the grocery aisle and they attack him. Linden gets away, but Bazil has a heart attack on the grocery store floor. Bazil gets taken to a hospital in Fargo and Geraldine and Joe stay with him there for several days. While Joe and Geraldine are at a diner and Bazil is sleeping, Geraldine implies that she is going to kill Linden Lark. Joe believes that Linden will kill his mother if she tries, and so he resolves to do it himself.
Joe, now set on his mission to kill Linden, tells Cappy what he intends to do. Joe resists Cappy’s offers to help, worried about implicating him in the crime, but Cappy insists on teaching him to shoot with his father’s rifle. Despite practice, Joe is a terrible shot. The boys, knowing that Linden is a golfer, plan to ambush and kill him one day while he golfs, since the overlook behind Cappy’s house has a good view of the golf course. Next, Joe orchestrates running into Linda during her lunch break and elicits information from her about Linden’s golf habits, learning that Linden always plays very early in the morning.
Cappy tells Joe to steal Doe’s rifle during the annual summer powwow that weekend. During the ceremonies, Joe leaves and takes the gun from Cappy’s house, breaking glass and unplugging the TV to make the robbery seem like an outside job. Joe then buries the gun behind the oak tree on the hill overlooking the golf course. Afterward, Joe tells Cappy firmly that he is going to carry out the rest of the plan alone, and when Cappy insists he wants to help steady Joe’s poor aim, Joe agrees, but secretly resolves not to tell Cappy when he is going to the overlook.
The next week, Joe goes to the overlook every day and watches for Linden. On Thursday, Linden shows up and Joe descends the hill with the rifle to prepare for his shot. Joe shoots Linden in the stomach, botching the job, and then freezes. Suddenly, Cappy comes up behind Joe, takes the rifle out of his hands, and shoots Linden dead. Cappy and Joe flee, disposing of the rifle under Linda’s porch and spending the rest of the day drinking at Whitey’s, who suspects their involvement in the murder and encourages them to give him their shirts to build up their alibi. When Joe asks Cappy how he knew Joe would be at the overlook, Cappy tells him that he went there every day just in case.
When Joe goes home that night, Bazil asks if Joe knows anything about Linden’s death. Joe insists that he does not. The next day, Joe, worried about law enforcement finding the rifle, goes to Linda’s house. She invites him in and tells Joe that she knows that he used her information about Linden’s golfing to help Linden’s murderer. When Joe asks why Linden raped Geraldine, Linda explains that Linden was jealous of Mayla and wanted her to run away with him using the money that Curtis Yeltow gave her to keep her quiet about his paternity of her child. Linda tells Joe that she thinks that Linden had a monster inside him. Joe begins to worry that he, too, has a monster inside, as he is plagued by terrible dreams of the crime he committed. Finally, Linda tells Joe that she found the rifle under her porch, disassembled it, and threw it in the Missouri river. Later that week, Joe talks with Bugger Pourier, who indicates that he found Mayla’s body in the construction site near the reservation.
After receiving a letter from Zelia’s parents instructing Cappy to never contact Zelia again, Cappy decides to drive to Montana to talk with her. Joe, Zack, and Angus all go with him. The boys buy alcohol and drink it as they speed down the highway. Joe is asleep in the back when the car hurtles off the road and flips. Zack and Angus are severely injured in the accident, but Joe is fine. He walks around looking for Cappy, hoping that he has already gone to seek help. Then Joe stumbles upon Cappy’s lifeless body in the grass. Joe continues holding Cappy even after a policeman, who looks exactly like the spirit that Joe saw at his window, approaches him and tells him to “let go.” Joe gets taken to the police station, where Geraldine and Bazil pick him up. They drive silently back to the reservation.