It's the 1940s and Charlotte Gray (CATE BLANCHETT) is a Scottish woman working in London who meets Peter Gregory (RUPERT PENRY-JONES), a dashing RAF pilot at a book signing party. One thing leads to another and the two are soon lovers, but Peter's leave is up and he must return to duty in France.
Months later, Charlotte waits for Peter to return, but instead receives news that he's been shot down but is alive somewhere in France. Accordingly, and due to her fluency in speaking French, she joins a covert British military operation, the Special Operations Executive, where she's to go undercover as a French citizen but serve as a courier for the French resistance movement in Vichy. Her real purpose, however, is to find Peter.
Sporting both a new hair color and name - she's now known as Dominique Ober - Charlotte parachutes into the lands where the local French government still runs the show, but is closely allied with the Nazis. There, she meets her British contact, Mirabel (RON COOK), as well as the French one, Julien Levade (BILLY CRUDUP), a communist heading up the local faction of the French resistance.
With her cover nearly blown during an exchange, Julien has Charlotte pose as the housekeeper for his gruff father, Levade (MICHAEL GAMBON), where she's to care for two young Jewish boys they've taken in after their parents have been deported. As things become increasingly precarious and volatile when German troops are brought into their territory and are assisted by a local teacher, Benech (ANTON LESSER), in rounding up other Jews, Charlotte does what she can to learn anything about Peter's situation, all while finding herself also being drawn to Julien.