Matthew Ryan, Harry Treadaway, has just been released from a psychiatric hospital after a breakdown triggered by the disappearance of his younger brother, Tom Ryan, Lewis Lemperuer Palmer. He begins to hear Tom's voice and to see him around, a haunting that pushes him to seek guidance from his circle: his friend Simon Pryor, Tom Felton; the parish priest Adrian Ballan, Alex Jennings; and his new neighbor Amy Tyler, Ros Leeming. Amy hands him a newspaper clipping about Shelley Cartwright, Nikki Amuka Bird, a nearby psychic medium, and suggests he visit her for help, which he does.
Shelley Cartwright suggests that Tom's ghost is trying to warn Matthew about something, and Shelley’s daughter Rebecca, Tyler Anthony, provides him with a drawing of a girl. Matthew learns that Simon’s younger sister Sophie Pryor, Georgia Groome, has also gone missing. He goes to Simon and shows him the drawing, and they realize it is Sophie, though Simon hastily adds that Shelley died in a fire years earlier. Matthew returns to Shelley’s flat and finds it burnt out; he realises that it was her ghost that helped him and that Rebecca’s drawing came from her ghostly influence.
After spending the night away from the ruined flat, Matthew returns home to discover that his father has arranged for him to be re-committed to the psychiatric hospital. He runs away and hides in the burnt-out shell of Shelley’s home, where he experiences a vision revealing that it was Tom and Sophie’s abductor who burned the flat down with Shelley and Rebecca inside, and he sees the name Ballan scratched on the floor. He realises that the priest is the killer, and a new fear grips him as he grasps the depth of the betrayal.
He rushes to the church to search for Tom and Sophie, telling Simon Pryor, Tom Felton, along the way that Ballan is the killer, though he does not expect belief. He enters the crypt beneath the church and finds Sophie Pryor, Georgia Groome, alive but very frightened. He starts to help her, but is knocked out by Ballan, who emerges in the shadows. Meanwhile, Simon and Matthew’s father have come to the church to look for Matthew, and Ballan tries to keep up the ruse by claiming he hasn’t seen him. Simon, drawn by doubt, proceeds into the crypt and is killed by Ballan. When Matthew comes to, he sees Simon’s body and flees, only to encounter Ballan, whose eyes flash red as he taunts that Tom cried out for his brother. Enraged, Matthew strikes Ballan with a rock, collapses outside, and is rushed to hospital.
In the hospital, Matthew’s father reassures him that Sophie is safe and that the bodies of both Tom and the real Adrian Ballan were found in the crypt—the killer was an impostor and has escaped, but the police are actively searching for him. Matthew revisits the newspaper clipping Amy gave him, which predates the fire in Shelley’s flat, and he realizes that Amy’s ghost had been guiding him all along. Tom is finally buried properly in the churchyard, and Matthew and his father visit his grave; Matthew also visits Amy’s grave, which lies nearby in the same quiet cemetery. The haunting conclusion ties the spectral help to the living world, leaving a careful sense of closure for the people left behind while hinting at the unresolved danger the impostor may still pose.