뉴욕 발레단에 소속된 니나(나탈리 포트만)는 전직 발레리나 출신인 엄마 에리카(바바라 허쉬)의 총애를 받으며 모든 것을 발레에 바치고 있다. 예술 감독 토마스 리로이(뱅상 카셀)는 백조와 흑조라는 베스(위노나 라이더)를 새로운 시즌의 오프닝 작품 백조의 호수에서 강판시키고 니나를 발탁한다. 하지만 순수하고 나약한 백조 연기에 비해 관능적이고 도발적인 흑조를 연기하는 데에는 어딘지 불안한 니나. 게다가 새로 입단한 릴리(밀라 쿠니스)는 니나처럼 정교한 테크닉은 없지만, 무대를 압도하는 카리스마와 관능미로 은근히 비교 대상이 되는데...

영국이 독일에 선전포고를 한 1939년 9월 3일 저녁, 안개 자욱한 런던의 워털루 다리위에 한 대의 지프가 멎는다. 로이 크로닌(로버트 테일러 분) 대령. 그는 프랑스 전선으로 부임하기 위해 워털루 역을 향해 달리는 중이었다. 군인다운 단정한 매무새엔 기품이 넘쳐보였으나, 어딘가 얼굴엔 쓸쓸한 표정이 어리어 있었다. 그는 48살이 된 그날까지도 독신으로 지내고 있었다. 그는 차에서 내려 서서히 워털루 다리 난간으로 간다. 난간에 기대어 선 그는 호주머니에서 조그만 마스코트를 꺼내어든다. 일생을 통하여 언제고 잊을 수 없는 마스코트. 그의 눈앞으로 슬픈 사랑의 추억이 서서히 물결을 이루며 다가온다. 제1차대전. 전쟁의 소용돌이 속의 어느 날. 워털루 다리 위를 산책하던 25살의 젊은 대위 로이 크로닌은 때마침 공습 경보로 지나가던 사람들과 함께 지하 철도로 피신한다. 그는 프랑스 전선에서 휴가를 받고 나와 있다가 내일로 다가온 부대 귀환을 앞두고, 혹시 마지막이 될지 모르는 런던과의 이별을 아쉬워하며 황혼의 거리를 거닐고 있던 중이었다. 그때 그는 핸드백을 떨어뜨려 쩔쩔매고 있는 한 처녀를 도와주고 함께 대피한다. 혼잡한 대피소 안에서 그들 두 사람은 자연스럽게 가까워진다. 그녀의 이름은 마이러 레스터(비비안 리 분). 올림픽 극장에서 공연중인 올가 키로봐 발레단의 무희였다. 공습이 해제되고 밖으로 나오자, 마이러는 로이가 출정한다는 말을 듣고 "행운이 있기를 빈다"며 조그만 마스코트를 쥐어주고는 서둘러 사라진다.

유명한 발레 무용수로 활동했던 나자는 스스로에 대한 통제와 혹독한 훈련으로 자신을 끝없는 고통 속으로 몰아갔다. 그러나 현재 발레 교사로서의 삶은 나자의 어떤 공허함을 채울 수가 없다. 그녀는 새로운 삶을 찾기 위해 어머니가 있는 곳으로 돌아가 10대에 낳아 어머니 손에서 키운 자신의 아들 마리오를 만난다. 둘은 서로를 낯선 이처럼 느끼며 강하게 이끌리고 도덕적 관습을 뛰어넘는 강렬한 관계로 발전한다. 그러나, 이 만남은 각자 자기 자신만을 인식하기 위한 몸부림으로 변하기 시작한다.