Após a filha de Jimmy Marcus (Sean Penn) ser encontrada morta, Sean Devine (Kevin Bacon), seu amigo de infância, é encarregado de investigar o caso. As investigações de Sean o fazem reencontrar um mundo de violência e dor, que ele acreditava ter deixado para trás, além de colocá-lo em rota de colisão com o próprio Jimmy, que deseja resolver o crime de forma brutal. Há ainda Dave Boyle (Tim Robbins), que guarda um segredo do passado que nem mesmo sua esposa conhece. A caçada ao assassino faz com que o trio tenha que reencontrar fatos marcantes do passado, os quais eles preferiam que ficassem esquecidos para sempre.