The movie opens in an asylum, where Charles (J.T. Walsh) talks to Karl (Billy Bob Thornton) about cars and women. Two student reporters Marsha (Sarah Boss) and Theresa (Kathy Sue Brown) arrive to interview Karl, who has committed murder, and is due to be released soon. They are introduced to the warden, Jerry (James Hampton), who explains that Karl is sensitive about having his picture taken. The interview is conducted in near darkness, with Karl speaking almost to himself.
Karl describes his childhood, where he was isolated from his family. He was picked on by other kids, and spent time working on lawnmowers. He says his mother was being raped by local man Jessie Dixon, and kills Jessie with a sling blade. When his mother objected to the killing, Karl killed her. When asked if he'll kill again, he says he has no reason to.
Karl is released, and returns to his hometown. He tours the town, carrying his books and bible from. He helps a boy, Frank (Lucas Black) carry laundry home, and Frank invites Karl to play football. Karl is uncomfortable with being free, and tries to return to the asylum. Jerry fixes Karl up with a job at a small repair shop. Since Karl has nowhere to go, Jerry invites him to his house for the night, but his family is obviously nervous.
Jerry introduces Karl to Bill Cox (Rick Dial), who owns the repair shop, and Scooter (Brent Briscoe). Karl completes a day of work, and Bill locks him inside the shop for the night. The next day, Bill gives Karl a key and an advance on his paycheck, so he can buy supplies. Karl arrives at Frank's house, and Frank takes him to his mother's store. Karl meets Frank's mom Linda (Natalie Canerday) and manager Vaughan (John Ritter). Linda allows Karl to stay in their garage, and Frank and Karl begin their friendship. Karl refuses to tell Frank about the murders. Frank tells Karl that Vaughan is gay, and Linda's boyfriend Doyle is mean to her, but since his father committed suicide, she is lonely.
Doyle (Dwight Yoakum) is doubtful about Karl staying in the garage, and abuses Vaughan verbally. Vaughan and Linda leave, and Doyle verbally abuses Karl and Frank's father. Frank helps Karl get settled, and they share a joke.
The next day, Vaughan takes Karl to lunch and tells him he's gay. He also tells Karl that Doyle might hurt Frank. That night, Doyle has a band party with his buddies at Linda's house. They go to the county line for beer, bringing Karl and Vaughan, and they trade jokes with the police. Back at the house, the band laments about a lack of gigs, and Doyle becomes enraged, throwing the band out. Linda confronts him, and Doyle threatens her. After Doyle leaves, Frank talks to Linda, telling her he's nervous all the time. Karl tries to cheer Linda up with a joke. Karl tells Linda why he was incarcerated, and tells her he would never hurt her or Frank.
Linda arranges a dinner with Melinda (Christine Renee Ward), whom she hopes will like Karl. Vaughan and his friend Albert (Tim Holder) are also there. Melinda and Karl go for a walk.
The following day, Melinda brings Karl flowers. Conversation is stilted, but Karl watches her leave. Later, Karl shares a story with Frank: his father made Karl throw away a baby boy. Karl buried it instead. They talk about life and death, and Frank says the bible says people who commit suicide or kill others go to Hades.
Frank is in love with a girl named Karen, but she doesn't want to be seen with him. When they come home, Doyle is back, apologizing for his behavior. He says he'll be coming over more, trying to be a better person. Frank doesn't buy it. Karl cheers Frank up by playing football with him.
Later, Karl returns to his old house where he grew up. He finds his father (Robert Duvall), who is senile, and refuses to recognize Karl as his son. Karl confronts his father about killing his little brother, then goes to see his brother's grave.
That night, Karl comes into Linda's room, where she and Doyle are in bed. He tells Linda he wants to be baptized. He's carrying a hammer and says we woke up holding it. The following day, Karl is baptized in a river. When they return, Doyle sends Linda to fetch dinner, then he tells Frank to obey him, and to get rid of Karl. Doyle tries to hit Frank, but Karl stops him. As Karl leaves, he sees Linda and thanks her for being good to him.
Karl finds Frank hiding in the woods, and gives Frank his books. Frank realizes Karl is leaving, and Karl tells Frank to stay away from Doyle for the night. Karl then goes to Vaughan and tells him to take care of Frank, leaving him with his earnings from the repair shop.
At night, Karl is seen staring at Doyle's house and sharpening a lawnmower blade. He kills Doyle, after asking how to call the police. Karl then calls the police and waits for them to take him into custody, eating leftover fried chicken.
Later, Karl listens to Charles talking again - back in the asylum. Karl tells Charles he doesn't want to listen anymore. End.