Katie Burke (Katie Holmes) is a young grad student sitting on the stairs of a campus building. Her friend Sam (Zooey Deschanel) drags her to a job fair where they check out the booth of a company they want to work at when they graduate from college. The company recruiter flirts with Katie. Later we see that Katie is also under severe pressure to complete her thesis.
At the same time, Detective Wade Handler (Benjamin Bratt), an ex-alcoholic, is given a new case by his lieutenant (Fred Ward). It concerns a missing person named Embry Larkin (Charlie Hunnam), who was a rich orphan. Handler finds out that Embry was Katie's boyfriend when he disappeared 2 years ago. Handler contacts Katie, who says she's not sure if Embry disappeared, left school, or both. She also seems to be generally irritated by Handler.
Katie, Sam and some friends including August (Will McCormack) and Amanda (Gabrielle Union) go to a party one night, so that Katie can relax from constant stress and exhaustion, mostly because of her thesis and wondering if she's going to get her job. All of them get drunk/stoned, and during a cool strobe light effect scene, Katie thinks she sees Embry lurking. A few days later, she goes outside and thinks she sees him again, driving away in a car. Handler tells Katie that he thinks Embry is dead, because he had two first-class airplane tickets to Greece that he hasn't used, not to mention never having taken any money out of an account or used any credit cards in the past 2 years.
One night while Katie is studying hard for her thesis, she falls asleep, completely exhausted. When she wakes up, a number has been inscribed in the desk where she was sitting. It's the Dewey decimal number for a library book. She goes to shelf where the book, Dante's "The Inferno," is. Suddenly, she sees what are presumably Embry's eyes staring at her from the other side of the shelf. She is startled and runs out of the stacks into the tunnels that run between buildings.
Meanwhile, Handler talks to Sam, Amanda and about Katie and Embry, asking questions about their relationship. Sam tells him that Embry didn't like Katie's male friends, especially Harrison Hobart (Gabriel Mann). Harrison, who has long had a crush on Katie but doesn't seem to realize the feeling isn't mutual, tells Handler than Embry once put him in the hospital because he poked him with a glass bottle. Later Harrison confesses to Katie that he loves her. She says he's a great guy, but she doesn't feel the same.
The next day, Katie is again in the library, hard at work. An odd girl in the library, Mousy Julie (Melanie Lynskey) bothers her. Julie tells her that Harrison has disappeared. Katie is convinced that Embry is responsible for Harrison's disappearance. Katie has lunch with Harrison's parents who are trying to account for his disappearance. While in the restaurant, Katie sees Embry sits at another table. Katie storms outside and yells at him. He tells her to come to his country house, which was a nesting spot for the two before Embry disappeared.
Katie goes there, and falls asleep again. When she wakes up, Embry is playing the piano. She tries to leave, but Embry follows her. Eventually he pins her against the wall, but she knees him in the groin and escapes. She goes over to Handler's apartment. Katie and Handler have sex, and in the middle, she imagines Handler transforming into Embry. She gets this out of her head, and she realizes that for the first time in a while, she's happy, sitting there with Handler. She also completes her thesis.
Handler quits the police force. On his last day, a forensic expert tells Handler that a note that Embry has supposedly just written to Katie was written over two years before. Handler gets in his car and buys an alcoholic drink, stressed. He drinks, but quickly spits it out. He can't start his car because there is an alcohol sensor on the ignition. Katie is waiting on some steps for Handler to pick her up. They are going to go off to Handler's cabin in New Hampshire for a little while. Embry suddenly attacks her, telling her that wherever she goes, he'll find her. Handler shows up, and Katie tells him what just happened.
Katie and Handler go into an old tunnel that Katie and Embry used to hang out in a lot. Handler has his gun and flashlight. Katie continues to see Embry, but Handler doesn't. Suddenly, we flash back to Katie and Embry, two years before, in that same tunnel they're in now. Embry tells Katie that he's leaving her and that he never wants to see her again. Katie gets upset, talking about the trip to Greece they're supposed to take together. Suddenly, Katie picks up a rock and repeatedly smashes Embry over the head with it, killing him. Katie is revealed to be completely insane because her father did the same thing to her when she was little: He abandoned her.
At this point, Handler realizes that Katie is sick and has been imagining seeing Embry. He catches sight of something in the water, probably Embry's body, and leans over for a closer look. Katie picks up another rock and hits Handler over the head with it, plunging him to the water where he ultimately dies.
On graduation day we see the group of friends hanging out together. Harrison has reappeared and explains that he had been climbing a mountain, became dehydrated and disoriented, and was rescued by the state police. He asks Katie about the cop and she said he's probably in New Hampshire.
Epilogue. Flashing forward several months later, Katie is at her job that she wanted, when the recruiter she has been dating tells her that he's close to becoming partner, so he can't risk dating her any more. Katie gets that same look on her face... Her murderous self is apparently about to emerge again.