漢高帝元年(公元前206年),劉邦攻占秦都鹹陽。11月,劉邦部下曹無傷密告項羽:劉邦欲稱王關中。項羽大怒,派大將英布率四十萬大軍攻破劉邦軍隊扼守的函穀關,並接連拿下新豐、鴻門(今陝西臨潼東北),欲與劉邦決一死戰。麵對強大的軍事壓力,劉邦隻好暫時向項羽屈服,但項羽並不肯就此罷休,在其謀臣範增的建議下,在鴻門設宴,準備於席間刺殺劉邦。劉邦赴宴如同虎口做客,去之危險,不去又不行。張良向劉邦分析了項羽其人,決心隨劉邦赴宴,同項羽展開一場心理戰,以謹慎而靈活的策略保護劉邦。
席間,劉邦、張良首先回顧了楚漢聯盟的曆史,揭露小人進讒,造成彼此誤會,項羽理屈詞窮,無言以對,隻好把曹無傷拋出來當替罪羊。劉邦取得了第一百一十六回合的勝利。
範增在席間屢次暗示項羽速殺劉邦,項羽猶豫不決,不願貿然行事。計謀多端的範增又從帳外找來勇士項莊,以舞劍助興為名,伺機殺劉邦。這時,張良的好友項伯(項羽的叔父)看出破綻,也拔劍對舞,以身掩護劉邦,使項莊難以下手。
在這千鈞一發之際,張良托詞走出帳外,命武將樊噲闖入帳內保駕。樊噲仗劍執盾入帳,目視項羽,怒發衝冠。項羽駭然,以酒相慰。樊噲借酒發揮,麵斥項羽聽信流言蜚語,誅害有功之人,項羽瞠目結舌,隻好命項莊停止舞劍。此時,劉邦說自己要上廁所,在樊噲等護衛下,飛奔而去。
張良估計劉邦已走遠,這才回到帳內,辭謝道:“沛公(劉邦)酒量不大,身體不舒服,不能親自辭謝大王。現備下白璧玉鬥各一雙,獻給大王和範將軍。”項羽忙問劉邦哪裏去了?張良回答:已返回軍中。項羽無可奈何,隻好收下寶物,不了了之。範增氣得把玉鬥摔到地上,憤怒地說:“奪項王天下的人,一定是沛公!”
由於張良的謀劃,劉、項這場驚心動魄的鬥爭,終以項、範枉費心機、功敗垂成而結束。