Told through the narration of a grown-up "Shakes", four young boys: Lorenzo "Shakes"(Joseph Perrino), Michael (Brad Renfro), Tommy (Jonathan Tucker), and John (Geoffrey Wigdor) are the best of friends growing up in Hell's Kitchen in New York City. Their family lives are hard, involving broken homes and spousal abuse, and the boys turn to street antics and volunteering as altar boys to escape. Father Bobby (Robert De Niro), an ex convict turned priest, watches out for them and tries to mold them into upstanding members of society. Despite their good hearts the boys get into all kinds of trouble, including sneaking into confessionals and pretending to be priests and playing pranks on nuns. Shakes becomes an errand boy and fast friends with a street kingpin named King Benny who runs all the illegal activity in Hell's Kitchen.
One fateful day Michael suggests they knock off a hotdog vendor out of boredom. When Shakes runs off with a hotdog the vendor gives chase, leaving the stand unsupervised and allowing the three other boys to feast in his absence. Michael suggests that they leave the cart teetering on the edge of the subway entrance so when the vendor comes back he'll have to struggle to keep it from falling, giving them time to escape. In a tragic turn of events, the cart crashes down the stairs hitting and almost killing an elderly man.
The boys are sentenced to a year in the Wilkinson Home for Boys. Because Shakes arrived at the scene of the cart crash later than the others (and because of the vouching of Father Bobby), he's only sentenced to 6 months. The boys hardly fit into the home which is filled with boys who have committed much more serious crimes and are subject to their ridicule and beatings. Worst of all is a guard named Sean Nokes (Kevin Bacon) who quickly turns the boys lives into a living hell. He begins by humiliating them along with three other guards, Henry Addison, Adam Styler and Ralph Ferguson (Jeffrey Donovan, Lennie Loftin and Terry Kinney respectively). Nokes embarrasses them in front of the other inmates by making them eat off the floor. The abuse escalates to beatings at night. He and the three other guards drag the four boys into the basement of the home where they repeatedly beat and rape them. It's suggested that this abuse becomes a nightly occurrence for the boys.
The boys, no longer innocent and filled with shame, write to their parents to tell them not to visit; afraid they'll know what's been going on. Father Bobby refuses to stay away and urges Shakes to not let the home change him for the worse.
The home holds a football game between the guards and inmates once a year for all the town to see. Michael convinces Rizzo, an intimidating black inmate to not let the guards win this year out of fear of the consequences but instead fight back as hard as possible. Rizzo agrees and the four boys and a few other inmates fight dirty and beat the guards in front of the whole town. Disgraced and angry, Nokes and the other guards throw the four boys into solitary confinement, starving them for two weeks straight. Shakes wakes up in the infirmary and is told by Michael that the guards beat Rizzo to death.
As Shakes' release date nears, the four boys agree that once they get out of the home they won't breathe a word about what happened there to anyone and bury it as deep in their minds as possible.
More than ten years later, two men walk into a pub and order a drink. Shakes' narration describes them as two of the most dangerous men in Hell's Kitchen. Both are members of the gang The West Side Boys. Both are murderers and drug users. The blonde man walks towards the bathroom and notices Nokes sitting by himself and eating dinner. He stares him down and Nokes reacts with annoyance. The blonde man tells him to enjoy his dinner and enters the bathroom. He returns to his dark-haired friend at the bar and tells him to look closely at Nokes. The dark-haired man recognizes him too and they both approach him. They sit down and introduce themselves as grown-up Tommy and John (Billy Crudup and Ron Eldard). Nokes says they were wimpy kids and he tried to make them tough. They point their guns at him. He tells them they're going to burn in hell. John says "You first", before they shoot him dead. Several people in the bar witness the shooting and hide their heads as Tommy and John walk out.
Meanwhile, Shakes (Jason Patric), now a newspaper columnist, meets with Michael (Brad Pitt), now an assistant district attorney. Michael says he's going to take the Sean Nokes murder case as the prosecuting attorney. Shakes reacts with anger before Michael tells him he's going to take the case to lose. Not only that, he's planning on revealing the corrupt Wilkinson Home for what it really is. He asks Shakes to help him bring his plan to fruition. Michael hands Shakes years of research on the three other guards who had tortured them all those years ago.
Shakes meets with Carol (Minnie Driver), a childhood friend of the boys and ex-girlfriend of Michael, and asks for her help finding files for the case since she has access as a social worker. She tells him that she's with John now and asks why he never asked her out. He said he never had the guts because she was Mikey's girl.
Shakes enlists the help of King Benny who makes sure the fallen and disgraced drunk, Danny Snyder (Dustin Hoffman), is Tommy and John's defense lawyer, making it seem even less likely the two men will walk. Shakes meets with an internal affairs agent to give him information on Adam Styler, who has now become a cop, and his cocaine habit as well as his illegal trafficking activity. King Benny meets with drug kingpin Little Caesar, revealed to be Rizzo's older brother, and tells him the truth of Rizzo's death at the hands of Henry Addison in the Wilkinson home. Little Caesar was told Rizzo died of pneumonia.
Shakes and Carol meet with Father Bobby and ask him to be Tommy and John's alibi for the night of the murder. Father Bobby doesn't want to swear to God and then lie on the stand. He asks why he should lie to let two guilty men, who will surely kill again, go free. He asks why Nokes' life means nothing to Shakes. Shakes tells him and Carol everything that happened while he, Michael, Tommy and John were at Wilkinson's. Afterward, Father Bobby says he has some thinking to do and tells them goodnight.
In court, Michael successfully begins to throw the case, conveniently forgetting to present the jury with a motive. With the help of a list of questions and answers Michael previously provided him, Snyder successfully displays one of the witnesses as a "scared woman who had too much to drink", making it questionable whether Tommy and John were ever in the bar to begin with. Michael calls a character witness for Nokes by the name of Ralph Ferguson. Ferguson tells the jury that Nokes was a good man and didn't deserve to be killed by two street punks. Snyder uses Michael's question list to grill Ferguson on the goings-on of the Wilkinson Home for Boys. He asks him about the beatings and rapes and whether he and Nokes participated. Ferguson, realizing who the defendants are, breaks down and confesses. He's dismissed by the judge but told not to stray too far from home since there are people who will "want to talk to him".
The next day Father Bobby gets on the stand, swears to tell the truth, and says that Tommy and John were with him at a Knicks game the night of the murder. Michael asks him if he has any proof. Father Bobby produces three ticket stubs.
The jury finds Tommy and John not guilty.
Addison's body is found in a swamp by La Guardia airport. Shot to death by Little Caesar's men. Adam Styler is arrested by internal affairs.
The four friends and Carol meet for a private party. They share stories of their childhood and sing "Walk Like a Man" for Carol. Shakes' narration explains that this was the last night they would ever be together. Not long after that, John's body is found in an apartment stairway next to a bottle of booze that killed him. About a year after that, Tommy's body is found by the river with five bullets in his head. Both of them never reached thirty. Michael moves to England, becomes a carpenter, and never marries. Shakes still lives in Hell's Kitchen and writes for the paper. Carol is an unwed mother, compliments of John, and named her son John Michael Thomas. She calls him 'Shakes'.