Irish born Guy (Townsend) is the son of a policeman, on scholarship at Cambridge University in 1933. On a rainy night, his door bursts open and beautiful Gilda Bess (Theron) enters his life. The daughter of a French aristocrat raised by her American mother, Gilda is somewhat notorious for her affairs, and quiet Guy lets her spend the night, treating her with respect and humor. Later, at a party, they become lovers, but Guy can't believe it will last. The death of her mother prompts Gilda to leave England, and Guy is amused years later when he spots her as an extra in a Hollywood film.
Gilda writes to Guy, inviting him to Paris, where she is a rising star in the art scene with her unusual photography. She lives with the beautiful, Spanish-born model, Mia (Cruz) and has a number of lovers, but soon Guy has moved in, and life in Paris seems ideal, perfect. But it is now 1936, the height of the Spanish Civil War: Guy has always supported the Republican Army, and as Franco's fascists make gains, Guy and Mia both find themselves drawn towards the conflict. Gilda does not concern herself with politics, or history: "There will always be wars," she tells her friends, "you need to get rid of the guilt." Despite Gilda's pleas, Guy and Mia leave Paris and go to Spain. He learns to fight, she is a nurse: they cross paths one night, and Mia admits that she was Gilda's secret lover before making love to Guy. In the morning, she is killed by a land mine. Guy returns to Paris, but Gilda shuns him.
Six years later, Guy is working for British intelligence, serving as a spy with the underground in occupied Paris. He is surprised to learn that Gilda is still living in her old flat but has taken a Nazi officer (Thomas Kretschmann) as a lover. He risks himself and his underground unit to spend a night with her, but in the morning she insists that their affair is over, and she will never see him again. Stunned at her coldness, he returns to his work D-Day is approaching, and the resistance must be ready. Expecting to meet a contact, he instead arrives at a cafe to find Gilda: she warns him that the meeting is a trap and helps him escape. Guy is aghast that she has taken sides, but he has no time to thank her. That night, he and his comrades destroy a rail station, but only Guy gets away.
When Guy returns to London, he learns that Gilda's association with British intelligence extends back several years. Now, with the occupation over, those deemed traitorous to France are being rounded up publicly humiliated, and worse and Gilda knows that she will be taken as a Nazi sympathizer. Braving the fighting in the streets, Guy returns to Paris to find Gilda, racing against time and history hoping to reunite with his love one last time.