Amanda Woods (Cameron Diaz), propietaria de una próspera agencia de publicidad dedicada a la creación de tráilers de películas, vive en el sur de California. Iris Simpkins (Kate Winslet), la encargada de redactar la popular columna de bodas para el London Daily Telegraph, vive en una encantadora casa en el campo inglés.
A pesar de que Iris y Amanda viven a diez mil kilómetros de distancia, las dos han llegado al mismo punto. Un poco antes de Navidad, deciden que necesitan alejarse lo máximo posible de sus respectivos novios (Edward Burns y Rufus Sewell), y ninguna está de humor para entonar villancicos. Amanda, decidida a irse lejos durante las vacaciones de Navidad, encuentra por casualidad una página web especializada en intercambio de casas. Está convencida de que la casita de Iris es el antídoto perfecto para sus problemas. Sin pensarlo mucho, Iris y Amanda acuerdan cambiar de continente y prestarse sus casas durante dos semanas. Iris llega a Los Ángeles un espléndido día soleado y cálido. Al poco de instalarse en casa de Amanda, en Brentwood, traba amistad con Arthur (Eli Wallach), un famoso guionista de la era dorada de Hollywood, y con Miles (Jack Black), un compositor que trabaja con el ex novio de Amanda. En Inglaterra, donde el clima no se parece en nada a la soleada California, Amanda disfruta de la cómoda soledad de Rose Hill Cottage, rodeada de campos nevados, cuando Graham (Jude Law), el hermano de Iris, llama a la puerta. Inesperadamente, las dos mujeres descubren que los mejores viajes son aquellos en los que se deja todo atrás.
.
La narración transcurre en una zona no identificada del Pirineo aragonés (se nombra un tipo de cordero como ternasco, los maquis reciben refuerzos de Jaca, e incluso Maribel Verdú recibió para la película clases de acento aragonés), el año 1944, cinco años después del fin de la Guerra Civil Española. Cuenta el apasionante viaje de Ofelia (Ivana Baquero), una niña de 13 años muy aficionada a los libros de fantasía, quien junto a su madre, Carmen (Ariadna Gil), en un delicado estado de salud debido a su avanzado estado de gestación, se traslada hasta un pequeño pueblo en el que se encuentra destacado Vidal (Sergi López), un cruel capitán de la Policía Armada franquista, nuevo marido de Carmen (ya que el padre de Ofelia había muerto al inicio de la guerra), individuo por quien Ofelia no siente ningún afecto.