In 1931, during the Great Depression, Michael Sullivan, Sr. is an enforcer for Irish mob boss John Rooney in Rock Island, Illinois. Rooney raised the orphan Sullivan and loves him more than his own biological son, Connor. Rooney sends Connor and Sullivan to meet with disgruntled associate Finn McGovern, but Connor shoots McGovern, resulting in Sullivan gunning down McGovern's men. Sullivan's twelve-year-old son Michael Jr. has hidden in his father's car and witnesses the event. Despite Sullivan swearing his son to secrecy, Rooney pressures Connor to apologize for the reckless action. That night, Connor murders Sullivan's wife Annie and younger son, Peter; he fails to kill Michael Jr., who received detention at school for fighting. Rooney sends Sullivan to collect a debt from a speakeasy owner, but Sullivan realizes that Rooney has set him up to be murdered and kills the owner and his bodyguard. Sullivan and Michael Jr. flee Rock Island and head to Chicago in hopes of meeting with Al Capone for work and learning the location of Connor, who has gone into hiding.
In a meeting with Capone underboss Frank Nitti, Sullivan offers to work for the Chicago Outfit in exchange for being allowed to kill Connor. Nitti rejects the offer, and Rooney reluctantly allows him to dispatch assassin Harlen Maguire, a voyeuristic crime scene photographer, to kill Sullivan. Maguire tracks him and his son to a roadside diner, but fails to kill Sullivan; realizing Maguire's intentions, Sullivan escapes through the bathroom and punctures Maguire's car tire before fleeing.
In reaction to the ordered hit, Sullivan begins robbing banks that hold Capone's money, hoping to trade it for Connor. Sullivan is impeded when the mob withdraws its money, so he visits Rooney's accountant Alexander Rance at his hotel. The encounter is a set-up, with Rance stalling Sullivan until Maguire enters with a shotgun. In the ensuing crossfire, Rance is killed, Maguire is injured by flying glass shards, and Sullivan escapes with Rooney's ledgers; as Sullivan flees, Maguire shoots him in his left arm.
When his father collapses from his wound, Michael Jr. drives them to a farm, where a childless elderly couple help him recover. Sullivan bonds with his son and discovers from the ledgers that Connor has been embezzling from his father for years, using the names of dead men (including McGovern). As the Sullivans depart, they give the couple much of the stolen money. Sullivan confronts Rooney with the information while they attend Mass. Rooney, however, already knows about the embezzlement and believes that Connor will almost certainly be killed - if not by Sullivan, then by Capone's men once Rooney is dead. He still refuses to give up his son and urges Sullivan to flee with Michael Jr.
Later one night, cloaked by darkness and rain, Sullivan ambushes and kills Rooney and his bodyguards with a Thompson submachine gun. With no further reason to protect Connor, Nitti reveals his location, after making Sullivan promise to end the feud. Sullivan goes to the hotel where Connor is hiding and kills him.
Sullivan drives his son to stay at an aunt's beach house in Perdition, a town on the shore of Lake Michigan. However, he is ambushed and shot by a disfigured Maguire. As Maguire prepares to photograph the dying Sullivan, Michael Jr. appears and points a gun at Maguire but cannot muster the will to fire. Sullivan pulls out his own gun and kills Maguire, before dying in his son's arms. Mourning his father's death, Michael Jr. returns to live with the elderly farm couple. Growing up, Michael Jr. reflects that his father's only fear was that his son would become like him. Michael states he has never held a gun since the fatal encounter between Maguire and his father. When asked if Sullivan was a good or bad man, he only replies, "He was my father."
- Tom Hanks as Michael Sullivan, Sr.
- Paul Newman as John Rooney
- Jude Law as Harlen Maguire
- Jennifer Jason Leigh as Annie Sullivan
- Stanley Tucci as Frank Nitti
- Daniel Craig as Connor Rooney
- Tyler Hoechlin as Michael Sullivan, Jr.
- Liam Aiken as Peter Sullivan
- Dylan Baker as Alexander Rance
- Ciarán Hinds as Finn McGovern