1、1924年冬天,9歲的小豆子被作妓女的母親切掉左手上那根畸形的指頭後進入關傢戲班學戲。戲班裡隻有師兄小石頭同情關照小豆子。十年過去瞭,在關師父嚴厲和殘酷的訓導下,師兄二人演技很快提高,小豆子取藝名程蝶衣(張國榮飾),演旦角;小石頭取藝名段小樓(張豐毅飾),演生角。倆人合演的《霸王別姬》譽滿京城,師兄二人也紅極一時。二人約定合演一輩子《霸王別姬》。
2、段小樓娶妓女菊仙(鞏俐飾)為妻,依戀著師兄的蝶衣,心情沉重地來到師兄住處,把他用屈辱換來的、師兄向往已久的名貴寶劍贈給小樓,並決定不再與小樓合演《霸王別姬》。在關師傅的召喚下,師兄二人再次合作。
3、抗戰結束後,兩人被迫給一群無紀律無素質的國軍士兵唱戲,段小樓與士兵沖突,混亂中菊仙流產,而後有士兵以漢奸罪抓走蝶衣。段小樓傾力營救蝶衣,低聲下氣去求曾經玩弄蝶衣的官僚袁世卿(葛優飾)。菊仙要蝶衣說謊茍且求釋,並將小樓不再與蝶衣唱戲的字據給蝶衣看。於是蝶衣在法庭上始終不屈,卻因其技藝被國民黨高官營救。解放後,兩人的絕藝並沒有受到重視,誤嘗鴉片的程蝶衣嗓音日差,在一次表演中破嗓,決心戒毒,歷經毒癮折磨後在段小樓夫妻的共同幫助下終於重新振作,卻被當年好心收養的孩子小四陷害,小四逼著要取代他虞姬的位置與段小樓演出,段小樓不顧後果罷演,菊仙為瞭大局勸他演,段小樓最終進行瞭演出。蝶衣傷心欲絕,從此與段小樓斷交。
4、文化大革命時,段小樓被小四陷害,並逼他誣陷蝶衣,段小樓不肯,被拉去遊街,此時蝶衣卻突然出現,一身虞姬裝扮,甘願同段小樓一起受辱,段小樓見蝶衣已經自投陷阱,希望能保護菊仙而在無奈中誣陷蝶衣,甚至說他是漢奸,蝶衣聽後痛不欲生,以為段小樓隻在乎菊仙,又看到自己所怨恨的菊仙此刻竟在可憐自己、幫助自己,便將所有的憤懣發泄在菊仙身上,抖出菊仙曾為娼妓,段小樓因此被逼與菊仙劃清界線,說從來沒愛過菊仙,菊仙在絕望中上吊自殺。
5、打倒“四人幫”後,師兄二人在分離瞭22年的舞臺上最後一次合演《霸王別姬》,虞姬唱罷最後一句,用他送給霸王的那把註滿他感情和幻想的寶劍自刎瞭,蝶衣在師兄小樓的懷中結束瞭自己的演藝生涯,也結束瞭這出燦爛的悲劇。