1935年夏天,英國莊園少女布里奧妮(西爾莎·羅南飾)目睹姐姐塞西利亞(凱拉·奈特莉飾)與仆人之子羅比(詹姆斯·麥卡沃伊飾)的親密舉動,又發現羅比寫給塞西利亞的情書內容露骨。當表姐羅拉遭性侵后,布里奧妮憑借想象力作出錯誤指證,導致羅比含冤入獄。塞西利亞與家庭決裂,始終守護對羅比的愛。二戰爆發后,羅比提前獲釋參軍卻染病身亡,塞西利亞在敦刻爾克撤退期間死于空襲。成年后的布里奧妮(蘿瑪拉·嘉瑞飾)放棄升學機會成為戰地護士,終其一生試圖彌補當年的謊言。五十六歲時她以小說《贖罪》揭開真相,卻無法改變兩位愛人永隔的命運。