The film takes places in Pittsburgh in 1956.
Troy (Denzel Washington) and Bono (Stephen Henderson) work as trash collectors in Pittsburgh. Troy complains that they never hire colored men for the driving; they always have to do the lifting. Bono asks about a girl that he's seen Troy eyeing at the bar they frequent. Troy claims he just bought her a drink and that hes never chased women after marrying Rose.
The two get to Troy's house where they are greeted by Rose (Viola Davis). She asks if Bono is going to stay for supper. He says hes going home for pig feet. Troy says hes going to go home with Bono unless she can top that; Rose tells him shes cooking chicken. Rose and Troy are affectionate with each other and recall marrying each other 18 years earlier. She tells him that their son, Cory, has been recruited by a college football team. He tells her the white men aren't going to let a "colored boy" play football.
Rose tells Troy he's going to drink himself to death, as he is drinking a whole bottle of gin while he chats. He tells her about a time Death visited him when he had pneumonia and he threw Deaths sickle and the two wrestled. After three days, Death gave up but promised to be back.
Troy's 34-year-old son Lyons (Russell Hornsby) (a product of a previous relationship) comes over. Troy notes that he only comes to visit on paydays. Sure enough, Lyons asks to borrow $10 which he promises to pay back. Troy complains that his other son doesn't have a bed and that he himself can't get any credit. He claims that he only has their furniture because a man sold it to him one day and hes paid $10 every month for 15 years to avoid losing it; but after this long speech, Rose points out that Troy's lying and they got the furniture from someone else. Troy tells Lyons to get a decent job but Lyons says he doesn't want a service job; hes a musician. This irks Troy who reminds Lyons the only reason he has money is because he works as a garbage man and Lyons is no better than him. Lyons says they are two different people and he needs to do something with his life that makes him feel like he has a purpose. Rose demands Troy give him $10. When Troy hands over the payday money to her, she takes ten dollars out for Lyons. He thanks her and promises to give it back to his dad.
Rose hangs laundry in the yard and sings a song about Jesus being a fence around her. Troy tells Rose the commissioner wants to meet him to discuss his job but he is optimistic he wont be fired. The two hear singing and find Gabe (Mykelti Williamson), Troy's brother, in the street, being chased by a group of kids. Gabe sings a song about plums he's selling but then tells Rose that he doesn't have any plums; it becomes evident he is mentally handicapped. Gabe tells Troy he saw St. Peters book for Judgment Day and Troys name is there and he knows Roses is in there but he hasn't seen it. Gabe believes he sees hellhounds and rushes off, singing a song about the Judgment Day. Troy and Rose discuss how Gabe's had brain damage after going to war and getting half his head blown off which is now held together with a metal plate. He received $3,000 from the US Army and that is how Troy was able to afford to purchase the house he lives in. Gabe lived with them until recently and now he moved out to live with a neighbor, Miss Pearl, so he can be more independent. Troy leaves to go watch the baseball game on the TV at a local bar he frequents, even though he was supposed to be building a fence.
Time passes. Rose and Troy's teenaged son, Cory (Jovan Adepo) comes home from football practice at his high school, still wearing his football uniform. Rose tells Cory that his dad is upset with him for not being home to do chores or help him with the fence. Cory tells his mom that his dad always leaves on Saturdays to go to the bar. Cory goes inside and Troy returns home. She asks him about the game but he doesn't know (hinting that maybe he wasn't at the bar like he suggested).
Troy finds Cory and argues with him about not doing his chores; Cory explains he had football practice. Troy demand Cory help him build the fence and they begin cutting boards. Cory asks his dad if they can get a TV. Troy says a TV set costs at least $200 and fixing the roof is $264. So if he had the money, he would fix the roof so it doesn't leak when it begins to snow or rain. Cory tells him he can put a down payment down on the TV but Troy says he doesn't want to owe anyone anything because if he misses one payment, they'll take the TV and keep his money. Troy says that if Cory comes up with $100, he will put up the other half. Cory has a job at the local A&P supermarket but he tells his dad that hes had his hours reduced because of football practice. Troy is furious and says Cory will never get to play football because the white man wont allow it. When Cory counters this with all the examples of black ballplayers, Troy continues to debate. Cory tells his dad about the recruiter from North Carolina who's coming to see him and asks his dad to sign permission papers but Troy refuses, insistent Cory go immediately to ask for his full-time job back, despite an arrangement where its being held for him until after football season. Cory responds by asking Troy why he never liked him. Troy tells him that nobody said he had to like him Cory eats every day and has a roof over his head and clothes on his back because Cory is his responsibility. Liking him isn't required.
Cory leaves to seemingly ask for his job back. Rose has been listening from nearby and asks Troy why Cory cant play football. Troy says he doesn't want Cory to end up like him, not able to get into the Major Leagues. Rose points out that Troy didn't tryout until he was much older and wont admit to himself he wasn't young enough. Troy remains insistent that its because he was black.
Troy is waiting in the Commissioners Office. He is called in. When he returns home, he excitedly tells his wife that he wasn't fired but actually promoted hes going to be the first colored man to be a driver in their city (instead of the one collecting the garbage). He suggests hell get to read the newspaper like his driver did but we learn he doesn't know how to read or to drive. He shrugs off not having a license, stating all you do is point the car where you want to go. Lyons stops by and Troy is sure he's going to ask for more money since its payday again. But Lyons actually is returning the $10 he borrowed. Troy refuses to take it and insists Lyons keep it for the next time he needs $10. Lyons finally gives it to Rose, insistent he repay his debt.
Gabe enters the house, singing about the Judgment Day. He thinks Troy is mad at him for moving in with Miss Pearl. Rose tells him its nice for Gabe to come and go and also that Troy should sign Cory's recruiter papers to let him play football. Troy tells everyone how his dad didn't care about his kids and he had 11 of them. He tells a story about his dad whipping him for kissing a 13-year-old girl, only to learn he was mad because he wanted her for himself. And that's when he became a man and started whipping his dad; he then moved out on his own, at 14. He made his living as a robber and met Rose and had Lyons, then went to jail for 15 years where he met Bono and learned to play baseball. It wasn't until he was released, at 30 years old, that he tried out for the Major Leagues, confirming Roses theory that it was his age and not his race that kept him from being recruited.
Cory comes home in his football uniform and throws his helmet in the direction of Troy. He says that Coach Zellman told him he cant play football anymore and for the recruiter not to come. Troy had learned that Cory didn't ask for his job to be reinstated, so he demanded that the coach pull him from the team. Cory points out that the job was being held for him until football practice is over and that his dad never listens to him. He screams that his dad is just worried that hes going to be more successful than him. Referencing the football helmet he threw, Troy tells him he swung the ball and didn't hit which was strike one. He'd better not strike out two more times.
Another day, in the backyard, Cory hits a baseball tied to a tree. His mom joins him and he tells her he isn't quitting the team, even if his dad demands it. Rose tells him shell talk to her husband as soon as he gets back from bailing Gabe out of jail he was arrested for disturbing the peace. Troy and Bono return home and Troy explains he gave them $50 to get Gabe out of jail and theorizes that they just wanted money from him. Bono and Troy begin working on the fence. They complain that the wood is too tough to cut through. Cory joins them and is able to cut through the wood easily. Troy asks why Rose wants a fence anyway. Bono tells him Some people build fences to keep people out and other people build fences to keep people in. Rose wants to hold on to you all.
After Cory leaves to go find a saw, Bono points out Rose loves Troy and they've been married for 18 years; he then asks about another woman that he suspects Troy of fooling around with. He points out that eventually hell have to cut one of them loose and his family should be his priority. Troy changes the subject and asks Bono when hes going to get a refrigerator for his wife. Bono responds that when Troy finishes the fence, hell buy her one. He then leaves, stating that he doesn't want to help him with the fence now; he has to protect himself from buying a fridge and knows it will take Troy six months to finish without his assistance.
Rose asks Troy about Gabe's arrest. He explains that he paid $50 for his bail and there will be a hearing in a few weeks to determine whether Gabe should be locked up in an asylum. He was charged with being too loud while scaring away some kids that were picking on him. Rose thinks a hospital might be a good place for Gabe but Troy insists he remain free since hes not hurting anyone.
As she prepares lunch, Troy tells Rose he has something to tell her hes going to be a dad. This is how she learns that hes been having an affair. Gabe shows up in the house, interrupting to give Rose a rose he has picked. Rose suggests Gabe get a watermelon and he leaves. She then becomes furious, pointing out that shes been loyal to Troy for 18 years and now hes done this to her. She grew up in a family where all her siblings were only half-related to her and she never wanted that for her children. He tells her this other woman helps him feel differently about himself and with her, he doesn't have to worry about all his family problems. She responds by saying she gave up her whole life for his, even though she knew he wasn't going anywhere; she feels just as stuck as he does but never betrayed him. She says he takes and never gives, which infuriates Troy and he grabs Roses arm, which makes her scream out. Cory rushes in and attacks Troy, punching him and knocking him to the ground. Troy lunges at Cory but is stopped short by Rose. He tells Cory that is strike two and then Troy leaves the house.
Six months have passed. Rose and Troy no longer speak even though he still lives in the home. This changes when Rose asks Troy if hes coming home after work the following day he usually spends Fridays at the house of the woman he was having an affair with but always claims hes at the bar. She asks that he come straight home and that she isn't going to be patient with him anymore. He reveals that he's actually going to the hospital to see the other woman, who went into labor months early.
Rose tells Troy that Gabe has been taken to the asylum after Troy signed papers arranging for half of Troys government checks to be rerouted to him, with the other half going to the hospital. Troy admits, because he cant read, he thought the papers simply allowed Gabe's release from jail. Rose then expresses her anger at Troy not signing the papers for Cory to go to college to play football, yet signing papers for his brother to be locked up in a mental hospital. The phone rings and Rose takes the call, learning that Troy's daughter has been born but the mother has died in childbirth. Troy walks into the yard and starts screaming at Death, as he did earlier. He challenges Death to come for him after he finishes the fence, in a one-on-one, man to man battle.
A few days later, Troy comes home with his baby daughter, Raynell. Rose finally decides to take in the baby as her own, citing You cant visit the sins of the father upon the child. She rejects the idea that Troy will be welcomed back into her life though.
Two months go by. Lyons enters the house to return $20 he borrowed from Troy. Cory walks home, stopping to look at a marines uniform in the window of a recruiting office. When he enters his house, he is greeted by Lyons. Cory tells him that he wasn't allowed to go to college to play football so now hes looking for a job.
Troy comes home with his payday money but Rose is more independent now and leaves for church without asking permission from Troy. Troy goes outside and sings a song about his old dog, Blue. Bono stops by and Troy notes that they haven't seen her each other much since Troy got promoted to drive a truck in a white neighborhood. Troy heard that Bono bought his wife a refrigerator; he says he had heard Troy finally finished the fence. Bono leaves to play a game of dominoes at his house. Troy stays behind, drinking and singing the song about his dog, Blue.
Cory enters the backyard but can't get into the home because Troy is sitting in the middle of the steps. He tries to walk over him. Troy is argumentative, stating its his house that he paid for and Cory needs to say excuse me. Cory stands up to his dad and wont acknowledge what he was given because its material things and he never gave him love and care, citing how he betrayed his mother. Troy says that Cory is "just another nigger on the street" to him. Cory responds by saying the house that Troy is bragging about owning should actually be owned by Gabe because his government checks provided the payments. Troy shoves Cory so Cory retaliates by swinging the baseball bat in the yard at Troy. Troy manages to get the bat away from Cory and stands over him with the bat, then kicks him out of the house. Cory walks away, saying hell only be back to collect his things. Troy tells him hell have Cory's things on the other side of the fence since hes not allowed back in the house. After Cory leaves, Troy begins swinging the baseball bat, taunting Death again, feeling energized by having gained the upper hand on Cory. He says he will put up a fight when Death comes.
Seven years have gone by. Raynell is now a little girl, waiting for the seeds she planted to grow in her garden. Rose comes outside and tells Raynell to get ready for Troy's funeral as he just died from a heart attack when swinging his baseball bat (which we know is him confronting Death as he always suggested he would). Cory comes home in his US Marines uniform, now a Corporal. Lyons joins the family inside and he chats with Cory, revealing his girlfriend broke up with him and also that he has to do time after being caught cashing other peoples checks. He admits hes still playing music though and that it helps him get out of bed in the morning.
Cory tells his mom he is not going to be attending his dad's funeral. He explains that he cant drag his dad with him everywhere he goes; one time in his life, hes got to say no. She tells him this is the time to put that aside and not going to his funeral isn't going to make him a man. Cory insists that his dad was like a shadow that followed him everywhere but Rose said that shadow was just him growing into himself. Rose gives a speech about loving Troy, even though he was flawed and hurtful. She adds that while she was at first upset about Raynell, now she has taken her in on as her own daughter and Rose is going to give her the best life she can.
Raynell finds Cory outside and she asks if he knows about Troy's dog, Blue. They both begin singing the song Troy always sang about his dog, Blue, showing that they have their father in common despite not knowing each other (since Cory was in the Marines for six years). By the end of the song, Cory is too choked up to continue.
Gabe arrives at the house, even though he was confined to a mental hospital. He holds his trumpet and says its time for St. Peter to open up the gates of Heaven for Troy. At first, Gabe blows the trumpet but no sound comes out. But then he tries again and a low note resounds from the instrument. They all look up at the sky and see the sun has appeared from behind clouds Heaven has opened up as Gabe always said it would. Gabe casually tells them, "That's the way that go" and exits.