Three boys, Jimmy Markum, Sean Devine, and Dave Boyle play hockey in a Boston street in 1975. Spotting wet concrete, they start writing their names into it when a car pulls up with two men, one pretending to be a police officer and the other a priest. One gets out and berates the boys for their actions, and tells Dave to get into the car. The men kidnap Dave and sexually abuse him for four days until he escapes.
Twenty-five years later, the boys are grown and, while they still live in Boston, have drifted apart. Jimmy is an ex-con running a neighborhood convenience store; Sean is a detective with the Massachusetts State Police; and Dave is a blue collar worker continually haunted by the abduction and rape. Jimmy and Dave are still neighbors and related by marriage. Jimmy’s 19-year-old daughter Katie is secretly dating Brendan Harris, a boy Jimmy despises. Brendan and she are planning to run away together to Las Vegas.
Katie goes out for the night with her girlfriends and Dave sees her at a local bar. That night, Katie is murdered, and Dave comes home with an injured hand and blood on his clothes, which his wife Celeste helps him clean. Dave claims he fought off a mugger, “bashed his head on the parking lot”, and possibly killed him. Sean investigates Katie’s murder. His pregnant wife, Lauren, has recently left him.
Sean and his partner, Sergeant Whitey Powers, track down leads, while Jimmy conducts his own investigation using his neighborhood connections. Sean discovers that the gun used to kill Katie was also used in a liquor store robbery during the 1980s by “Just Ray” Harris, the father of Katie’s boyfriend. Harris has been missing since 1989, but Brendan claims “Just Ray” still sends his family $500 every month. Brendan also feigns ignorance about Ray’s gun, but Sean believes it was still in the house. Sergeant Powers suspects Dave as a possible perpetrator because he was one of the last people to see Katie alive and because he has a wounded hand—and although Dave continues to tell Celeste the injury occurred while being mugged, Dave tells the police a different story. Soon, Jimmy becomes suspicious. Dave continues to behave strangely, which upsets his wife to the point she is afraid he will hurt her. While Jimmy and his associates conduct their investigation, Dave’s wife eventually tells Jimmy about Dave’s behavior, the bloody clothing, and her suspicions.
Jimmy and his friends get Dave drunk at a local bar. When Dave leaves the bar, the men follow him. Jimmy admits to Dave that he shot “Just Ray” at that same location for implicating Jimmy which resulted in his imprisonment. Jimmy informs Dave that Celeste thinks Dave murdered Katie. Jimmy tells Dave he will let him live if Dave confesses. However, Dave reveals to Jimmy that he did kill someone that night, but it was not Katie; he beat a child molester to death after finding him abusing a child prostitute in a car. Jimmy does not believe Dave’s claim and threatens him with a knife. With this threat, Dave falsely admits to killing Katie, thinking he can escape with his life, but Jimmy kills him and disposes of his body in the adjacent Mystic River.
While Dave is being killed, Brendan (having found out about his father’s gun during questioning) confronts his younger brother Ray Jr. and his friend John O’Shea about Katie’s murder. He beats the two boys and threatens to kill them if they do not admit their guilt. As John takes the gun and is about to shoot Brendan, Sean and Powers arrive and stop it.
The next morning, Sean tells Jimmy that John and Silent Ray confessed to killing Katie. It was all part of a prank gone violently wrong. The kids got hold of Just Ray’s gun and saw a car coming which happened to be Katie’s. John aimed the gun just to scare her, but the gun went off by accident. The car veered onto the curb and Katie got out and ran into the park. Silent Ray and John pursued her so she would not tell anyone. The beating Katie received was from Silent Ray, who had a hockey stick. Once she was beaten, John shot her again, killing her. Sean asks Jimmy if he has seen Dave, because he is wanted for questioning in another case, the murder of a known child molester. A distraught Jimmy thanks Sean for finding his daughter’s killers, but says, “if only you had been a little faster.” Sean then asks Jimmy if he is going to “send Celeste Boyle $500 a month too?”
Sean reunites with his wife and his daughter Nora, after apologizing for “pushing her away”. Jimmy goes to his wife, Annabeth, and confesses. She comforts him and tells him he is a king and kings always make the right decision. At a town parade, Sean sees Jimmy and mimics firing a gun with his hand, to let Jimmy know he is watching him.