It's 1879 and Florentino Ariza (UNAX UGALDE) is a young Columbian man working in the Cartagena telegraph office run by Lotario Thugut (LIEV SCHREIBER). One day on the job, he spots the lovely Fermina Urbino (GIOVANNA MEZZOGIORNO) and is instantly smitten.
Unfortunately for him, her donkey trader father, Lorenzo Daza (JOHN LEGUIZAMO), has grand hopes for her, and certainly doesn't want her marrying someone of Florentino's status. Accordingly, and when things get more serious between the two teens, Lorenzo moves her far away, where she is reunited with her saucy cousin, Hildebranda Sanchez (CATALINA SANDINO MORENO). It's there, and due to fear of her having contracted cholera that Fermina meets Juvenal Urbino (BENJAMIN BRATT), a handsome doctor who assures her that she is okay.
That's good news for Lorenzo who sees the physician as the perfect husband for her daughter, but it's bad for Florentino (JAVIER BARDEM) as he'll have to wait a lifetime to be with her. Worried about her son, Florentino's mother, Tránsito Ariza (FERNANDA MONTENEGRO), has his uncle, Don Leo (HECTOR ELIZONDO), get him a job far away in hopes that it will take his mind off her.
In transit, Florentino is seduced by a stranger, and thus begins what will be a long line of sexual encounters that he uses to mask the pain of his unrequited love for Fermina. As the years pass and her relationship with Juvenal goes through its own throes, Florentino's count of bedded women steadily increases, all as he patently waits for his chance with the love of his life.