In 1969 in Pasadena, California, a couple seeks the aid of the medium Shaun San Dena (Flor de Maria Chahua) because their son claims to see and hear monsters. San Dena aids the family by carrying out a séance, but they are attacked by an unseen force that pulls the boy into Hell.
In 2009 in Los Angeles, California, bank loan officer Christine Brown (Alison Lohman) hopes to be promoted to assistant manager over her co-worker Stu Rubin (Reggie Lee). Her boss, Jim Jacks (David Paymer), advises her to demonstrate that she can make tough decisions to get a promotion. Christine is visited by an elderly woman, Sylvia Ganush (Lorna Raver), who asks for an extension on her mortgage payment. Christine decides to deny Ganush an extension to prove herself to her boss. He compliments Christine on how she handled the situation.
In the bank parking lot, Ganush attacks Christine in her car. After a violent struggle, she removes a button from Christine's coat and uses it to place a curse on her. Later, Christine and her boyfriend Clay Dalton (Justin Long) meet the fortune teller Rham Jas (Dileep Rao), who tells Christine that she is being haunted by a spirit. At her home, Christine is attacked by the spirit and has nightmares about Ganush. At work the next day, Christine snaps at one of her co-workers and has a projectile nosebleed that soaks her boss in blood. Christine then goes to talk to Ganush at her granddaughter's home, only to find that she died the previous night and a memorial service is being held. Christine returns to Rham Jas, who explains that she is being haunted by a powerful demon called the Lamia that will torment her for three days before taking her to Hell. He suggests a sacrifice to appease the demon. The next day, the Lamia returns and thrashes Christine around her bedroom. Desperate to stop the attacks, Christine sacrifices her pet kitten. At a dinner party with Clay and his parents, she is again tormented by the Lamia, which frightens the Daltons.
Christine returns to Rham Jas for further help. He says that Shaun San Dena will risk her life to stop the demon for a fee of $10,000. Further supernatural attacks on Christine lead Clay to pay the fee. San Dena prepares a séance to trap the Lamia's spirit in a goat and kill it to vanquish the spirit. San Dena allows the Lamia to inhabit her body. Rham Jas tries to persuade it not to steal Christine's soul, but it refuses and vows never to stop until Christine dies. Christine then places San Dena's hand on the goat, causing the spirit to enter its body. San Dena's assistant, Milos, attempts to kill the goat, but is instead bitten by the goat and in turn becomes possessed, attacking the members of the séance. San Dena banishes the Lamia from the séance, but dies in the process. Rham Jas seals the cursed button in an envelope and then tells her that the only way to get rid of the curse is to give the accursed item to someone as a gift, thereby passing the curse on to that person.
After being driven home by Clay, Christine attempts to find a recipient for the curse. She decides to give the envelope to Stu, in revenge for his stealing her work and presenting it as his own, but changes her mind. With guidance from Rham Jas, Christine learns that she can give it to Ganush, even though she is dead. Christine drives to the cemetery where she is buried and digs up her grave. In a torrential downpour, Christine jams the envelope in Ganush's mouth.
The next day, Christine goes to meet Clay at Los Angeles Union Station, from where they plan to depart for a weekend in Santa Barbara. Clay, planning to propose, reveals to Christine that he found the envelope containing the cursed button in his car. Christine then realizes she mixed up her envelope with another that she gave to Clay when she accidentally dropped it. Horrified, Christine walks backward and falls onto the tracks. As a train barrels towards her, fiery hands burst from the ground under the tracks. Clay can only watch in horror as Christine is dragged down into Hell to burn for eternity.