Rose (Radha Mitchell) and her husband, Christopher Da Silva (Sean Bean), are concerned about their adopted daughter, Sharon (Jodelle Ferland), who has been experiencing nightmares and sleepwalking while screaming the name of a town, "Silent Hill". Desperate for answers, Rose takes Sharon to Silent Hill. As they approach the town, she is pursued by police officer Cybil Bennett (Laurie Holden). A child appears in the middle of the road, causing Rose to swerve and crash the car, knocking herself unconscious. When she awakens, Sharon is nowhere to be seen, and fog and falling ash blanket the town.
Rose wanders the empty streets of Silent Hill looking for her daughter and instead encounters various monsters which appear after sirens wail. Rose comes across a woman named Dahlia Gillespie (Deborah Kara Unger) who speaks of terrible things done to her own daughter, Alessa, by the townspeople. She claims that Sharon is Alessa. Rose returns to her car and runs into Cybil, who arrests her. After they discover that the road leading out of town has disappeared they pair up to search the town.
Meanwhile, Christopher also simultaneously scours the town, which is shown to be abandoned and without the mist and falling ash, with the reluctant assistance of Officer Thomas Gucci (Kim Coates), who grew up in the town. Christopher discovers documents showing that the town was abandoned after a coal seam fire thirty years before, along with a photo of Dahlia's daughter who bears a remarkable resemblance to Sharon. Told to stop investigating under threat of incarceration, he reluctantly heads home.