瓦迪斯瓦夫·斯皮尔曼是一个知名的犹太裔波兰籍钢琴家,任职于华沙广播。因纳粹德国入侵波兰,从此和家人永远分别。为了生存,他在纳粹德国的建筑工地当劳工,后逃离工地隐居,接受一些好心波兰人私下的救助。 斯皮尔曼多次躲藏,一次更被一名波兰妇女识破他是犹太人,所幸能及时逃离,而后得到朋友的帮助和接济。在这段躲藏的时间里,目睹了众多纳粹德国暴行,包括大规模的屠杀和焚烧尸体等。1943年的一次,他亲眼目击了还留在平民区的犹太人开始反抗,但最后被德军镇压,并进行大屠杀。 一年过后,华沙的生活环境更加恶化。波兰人进行了一次未成功的华沙起义,以致于华沙的人口急剧减少,使斯皮尔曼一次又一次地面临死亡。后来,斯皮尔曼所居住的公寓遭到德军坦克(疑似是三号战车N型)袭击,他不得不逃离。斯皮尔曼四处寻找食物和水源,最后在德军的大本营里找到了一罐腌制的黄瓜。由于没有开罐工具,他使用铁撬等工具试图打开罐子,而巨大的声音惊动了德国军官威尔姆·欧森菲德,他认出斯皮尔曼是犹太人。在被问及职业时,斯皮尔曼说自己是一个钢琴家,于是被要求演奏一曲。斯皮尔曼演奏了肖邦的第一号叙事曲,琴技使得欧森菲德无比惊讶。欧森菲德最后决定帮助斯皮尔曼躲藏,并定时给他提供生活必需品。 过了数周,苏联红军在一场反攻攻势中解放华沙。当斯皮尔曼在逃出躲藏的阁楼时,因穿着欧森菲德所赠与的德国军官大衣,而被红军士兵误认是德国军人,欲杀死他,但斯皮尔曼最后被确认是波兰人。 附近一个集中营被解放,但是欧森菲德上校和一些德国军人被捉获而成为战俘。欧森菲德遇到一名犹太音乐人,乞求他联系斯皮尔曼来帮助他,但这位犹太音乐人却没有听清楚欧森菲德的名字就被俄军士兵打断。斯皮尔曼回到了华沙广播电台,当他听到了欧森菲德的消息后,试图回去寻找他却未果。电影以斯皮尔曼在大型音乐会演奏肖邦的大波兰舞曲而结束,字幕显示斯皮尔曼于2000年在华沙去世,欧森菲德上尉则在1952年死于苏联的斯大林格勒劳改营。