David Drayton (THOMAS JANE) is a movie poster illustrator who lives in a small Maine town with his wife and young son, Billy (NATHAN GAMBLE). Other than having to deal with their contentious neighbor, Brett Norton (ANDRE BRAUGHER), things are fairly quiet there. That is, until a violent thunderstorm sends a tree crashing into their home.
The next morning, and with Brett going along with them, David and Billy head to the local grocery store for supplies. Once inside, a strange mist suddenly rolls in, with a local man, Dan (JEFFREY DeMUNN), running in, bloody and claiming something in that mist got his son. Nervous about that, those inside stay put.
Among them is the store manager, Bud (ROBERT C. TREVEILER), and his assistant, Ollie (TOBY JONES), while Sally (ALEXA DAVALOS) is one of the checkers who's sweet on local military boy Wayne (SAM WITWER). He's about to go on his leave with his buddies when that's suddenly canceled as the military rolls through the town in force.
Others there include new school teacher Amanda (LAURIE HOLDEN), senior citizen Irene (FRANCES STERNHAGEN), and local blue collar worker Jim (BILL SADLER). Then there's Mrs. Carmody (MARCIA GAY HARDEN), an Old Testament doomsayer who believes this is God's reckoning for all of mankind's sins.
The others don't believe her, at least at first, but that also holds true for Brett and others who think David and a small group are trying to mock him by saying that the store's bag boy has just been killed by some sort of monster, which is true. As the situation worsens, night falls, and various monsters and creatures come out of the mist toward the store, the survivors find themselves splintering into rival groups, with each thinking theirs is the only logical, sane, and/or correct one. With David worried about his son and his wife back home, he and a handful of others then decide they must take action to get out of this predicament alive.