In 1969 Pasadena, a Hispanic couple seeks the aid of a young medium named Shaun San Dena (Adriana Barraza), saying their son is ill and hears evil voices after stealing a silver necklace from a gypsy wagon, despite trying to return it. San Dena carries out a séance, but an unseen force attacks them and drags the boy to Hell. San Dena vows to fight the demon again one day.
In present-day Los Angeles, bank loan officer Christine Brown (Alison Lohman) vies for a promotion with conniving Stu Rubin (Reggie Lee). Her boss advises her to demonstrate tough decision-making. Sylvia Ganush (Lorna Raver), an elderly and disheveled European gypsy woman, asks for a third extension on her mortgage. After Christine denies her request, Ganush cries and begs on her knees not to have her house repossessed. Security guards arrive and she leaves in anger, accusing Christine of shaming her.
In the garage, Ganush ambushes and violently attacks Christine. After a long struggle, Ganush rips a button from Christine's coat and curses it. Later, Christine and her boyfriend Clay (Justin Long) visit a fortune teller, Rham Jas, who tells Christine a dark spirit is haunting her. At home, the entity begins to attack Christine. At work, she hallucinates about Ganush and bleeds profusely from her nose while vomiting blood on her boss. Amid the chaos, Stu steals a file from Christine's desk.
Christine goes to beg Ganush for forgiveness but discovers she has recently died. Christine returns to Jas, who explains that as long as Christine owns the cursed button, a powerful demon known as Lamia will torment her for three days before dragging her to Hell. He suggests a sacrifice may appease it. Christine reluctantly sacrifices her pet kitten. She meets Clay’s parents at their house for dinner, where grotesque hallucinations torment her again.
Christine returns to Jas, who requests a fee of $10,000. He introduces her to San Dena, who prepares a séance to trap Lamia in a goat and kill it. Things go horribly wrong when the Lamia possesses her and then her assistant. The possessed assistant vomits up the corpse of Christine's cat, saying it wants her soul. San Dena manages to successfully banish the Lamia from the seance, but dies after the fight.
Jas seals the button in an envelope and says that she can only remove the curse by transferring the button to someone else. Christine considers giving the envelope to Stu, but changes her mind. Jas informs Christine that she can give the button to a dead person. Christine digs up Ganush's grave and gives the corpse the envelope just at dawn.
Christine returns home and prepares to meet Clay at Los Angeles Union Station for a weekend trip. She is even more cheerful when her boss notifies her of the promotion after Stu confessed to stealing her file and was fired. At the station, Clay, hoping to propose to Christine, hands her the envelope with her missing button he found in his car, unaware of its significance. She realizes she gave the wrong envelope to Ganush, which means the curse was never lifted. Horrified, Christine backs away and falls onto the tracks just as fiery demonic hands emerge through the ground. Clay tries to rescue Christine, but a train speeds through and he can only watch as the hands drag her to Hell. Now holding the cursed button, a shaken Clay stares at the empty tracks, tears running down his face, with no trace of Christine.
Alison Lohman as Christine Brown
Justin Long as Professor Clayton "Clay" Dalton
Lorna Raver as Mrs. Sylvia Ganush
Dileep Rao as Rham Jas
David Paymer as Mr. Jim Jacks
Adriana Barraza as Shaun San Dena
Bojana Novakovic as Ilenka Ganush
Reggie Lee as Stu Rubin
Chelcie Ross as Leonard Dalton
Molly Cheek as Trudy Dalton
Art Kimbro as the voice of the Lamia
Octavia Spencer as a bank co-worker
Alex Veadov as the man with ponytail at the wake
The film includes cameo appearances by Raimi himself as an uncredited ghost at the séance, Raimi's younger brother Ted as a doctor, members of Raimi's family Emma, Henry, and Lorne in minor roles, frequent Raimi collaborator Scott Spiegel as a mourner at the death feast, and John Paxton and Irene Roseen as the old couple at the diner.