Paul Sheldon (James Caan) es un exitoso escritor de novelas románticas que, cansado de su personaje Misery Chastain, su mayor éxito, decide matarla. Liberado por fin, se aisla en una cabaña en Colorado y escribe una novela con distinta trama, con la que espera triunfar ante la crítica.
Con su manuscrito recién acabado, conduce de regreso a Nueva York, bajo una impresionante tormenta de nieve y sufre un gravísimo accidente, en el cual queda prácticamente inmovilizado, pero es rescatado de una muerte segura por Annie Wilkes (Kathy Bates), que descubre el accidente y lleva a Paul a su casa. Annie es una enfermera profesional y le proporciona los cuidados médicos que necesita, además resulta ser una gran admiradora del personaje Misery.
Mientras dura la convalescencia de Paul, Annie le hace creer que están incomunicados a causa de la nieve. La agente de Paul, Marcia Sindell (Lauren Bacall) extrañada por la larga ausencia de éste, decide comunicarse con el sheriff local, Buster (Richard Farnsworth) e informar de la ausencia de Paul.
Paul se percata eventualmente de que ha sido secuestrado, y de que Annie no ha informado ni a las autoridades que le están buscando, ni a su agente, ni a sus familiares. Además, descubre que Annie lo mantiene encerrado en su habitación, cuando abandona su casa para ir de compras.
Annie, a su vez, descubre que Misery muere en la última entrega de la saga, y obliga a Sheldon a destruir su nueva obra y escribir un nuevo libro en el que Misery resucite. Paul se da cuenta de que Annie está completamente trastornada, y trata de huir, pero no lo logra. Finalmente aparece el sheriff por la cabaña de Annie, ella oculta a Paul en el subterráneo, pero es descubierta por el sheriff, y ella lo mata. Al ocurrir esto, Paul hace su último intento por liberarse de Annie.