Ebenezer Scrooge (Jim Carrey) inizia le festività natalizie mostrando il suo solito disprezzo, urlando al suo fedele impiegato (Gary Oldman) e al gioviale nipote (Colin Firth).
Ma quando gli spiriti del Natale Passato, Presente e Futuro lo portano in un viaggio che gli rivela delle verità che il Vecchio Scrooge non ama affrontare, capisce di dover aprire il suo cuore per compensare anni di cattiva condotta prima che sia troppo tardi.