시골출신의 소설지망생 스팅고(피터 맥니콜)는 브루클린에서 값이 싼 집을 얻어 들어갔다가 옆집에 사는 생물학자 부부를 알게 된다. 네이단(케빈 클린)과 소피 부부와 친해진 스팅고는 소피(메릴 스트립)가 유태인 학살현장에서 살아왔다는 사실을 알게 되고 그녀에게서 이야기를 듣게 된다. 소피는 아버지와 남편을 잃고, 애인이 레지스탕스였다는 이유로 아우슈비츠로 보내진다. 수용소로 가는 도중 독일장교가 소피의 미모에 반해 그녀의 아이 둘 중에 하나만을 살려주겠다고 한다. 소피는 궁지에 몰린 상황에서 아들을 선택하여 살려낸다. 딸을 저버린 모정으로 그녀는 있는 힘을 다해 살아남고자 하고 수용소에 있는 아들을 구해내고자 한다. 하지만 아들을 찾지 못하고 전쟁은 끝난다. 미국에 와서 네이단을 만난 소피는 그와 살지만 네이단은 정신이상증세를 가지고 있다. 스팅고는 소피의 과거를 듣고 그녀를 사랑하게 된다. 소피에게 사랑을 고백하고 그들은 함께 떠나지만...