Troy Maxson (Denzel Washington) makes his living as a sanitation worker in 1950s Pittsburgh. Maxson once dreamed of becoming a professional baseball player, but was deemed too old when the major leagues began admitting black athletes. Bitter over his missed opportunity, Troy creates further tension in his family when he squashes his son’s (Jovan Adepo) chance to meet a college football recruiter.
In 1950’s Pittsburgh, Troy Maxson (Denzel Washington) lives with his wife Rose (Viola Davis) and their son Cory (Jovan Adepo), and works as a waste collector alongside his best friend, Jim Bono (Stephen McKinley Henderson). Troy’s older brother, Gabe Maxson (Mykelti Williamson), sustained a head injury in World War II that left him mentally impaired, for which he receives a government pension which Troy used to purchase a home for his family. Gabe has since moved out, but still lives in the neighborhood, where he is often tormented by the local children.
In his adolescence, Troy left home and became a robber to sustain himself, which led him to prison, where he met Bono and revealed himself to be a talented baseball player. Upon being released, a 30-year-old Troy pursued a career as a professional player, but was rejected due to his advanced age, although he firmly believes he was passed over due to the color of his skin. Having survived a near-fatal bout of pneumonia in his youth, Troy claims to have done so by defeating the Grim Reaper in a fistfight, upon which the Reaper vowed to return for a rematch.
Troy’s estranged son, Lyons Maxson (Russell Hornsby), infrequently visits him to borrow money, upsetting Troy, who believes that Lyons should compromise like he did and find a real job rather than pursuing his dream of becoming a musician. Rose later tells Troy that Cory is being scouted by a college football team, but Troy is dismissive of Cory’s chances of becoming a professional player. Rose asks Troy to build a fence around their house, and Troy demands that Cory help him as punishment for Cory not doing his chores due to football practice. Troy and Cory clash over Cory’s ambitions of becoming a Major League player, and upon learning that Cory is only working half-time due to practice, Troy demands that he ask for the full-time job, despite Cory’s attempts to convince him that the job is being held for him until football season is over.
Troy is promoted to driving the garbage truck, becoming the first African-American to do so despite knowing neither how to read nor drive. Bono finds out that Troy is cheating on Rose with a woman he met at the local bar and alerts him his actions will have repercussions. The two then become estranged when Troy is assigned to a different neighborhood. Troy later finds out that Cory didn’t ask for the the full-time job as ordered, and forces Cory’s coach to cut him off the team, also dissuading the college scouts from visiting. Cory lashes out and throws his helmet at Troy, which Troy claims is the first of Cory’s three permitted offenses. When called to bail Gabe out of jail for disturbing the peace, Troy unknowingly signs papers rerouting half of Gabe’s pension to a psychiatric hospital, forcing Gabe to be institutionalized.
Troy is forced to reveal his affair to Rose when his mistress becomes pregnant, leading to an argument in which Troy aggressively grabs Rose, causing Cory to intervene and knock Troy on the ground, which Troy marks as Cory’s second offense. In the following months, Troy and Rose become estranged, although they keep living in the same house, and Troy continues to visit the mistress, who ultimately dies in childbirth after going into early labor, leading an embittered Troy to angrily challenge the Reaper for another fight.
Troy brings his baby daughter Raynell home, and Rose decides to raise her as her own, but refuses to accept Troy back into her life. Cory enlists in the United States Marine Corps after missing his opportunity to attend college. When he returns home, Troy blocks his path and instigates a fight in which Cory swings at Troy with a baseball bat. Troy gains the upper hand, grabs the bat from Cory and kicks him out of the house. Energized by his victory, Troy once again challenges to Reaper to come for him.
Seven years later, Troy has died of a heart attack, and Cory, now a Corporal, returns home to visit Rose, who admits to loving Troy despite his many flaws. Cory refuses to attend the funeral, but Rose pleads that Troy is still a part of him, and Cory later reconsiders after interacting with both Lyons and an older Raynell (Saniyya Sidney). Gabe is released from the hospital and reunites with his family as they all plead their farewells to Troy.