公元前206年,項羽率兵西進入關,可關門緊閉。聽說沛公已平定關中,項羽大怒,派英布等人率兵攻破函谷關。沛公左司馬曹無傷見楚軍勢大,想投靠項羽,便派使者來告密,說:“沛公要當關中王。”項羽聽了,氣得瞪著眼直罵劉邦,項羽的謀士范增出主意要項羽消滅劉邦的兵力。項羽的叔父項伯是張良的老朋友,項伯怕仗一打起來,張良會跟著劉邦遭難,就連夜騎著快馬到灞上去找張良,勸他逃走。
張良不愿離開劉邦,就把項伯帶來的消息告訴了劉邦。劉邦請張良陪同會見項伯,再三辯白自己沒有反對項羽的意思,請項伯幫忙在項羽面前說句好話。項伯答應了,并且叮囑劉邦要親自到項羽那邊去賠禮道歉。第二天一清早,劉邦帶著張良、樊噲和隨從到了鴻門拜見項羽。劉邦拉著項羽的手,誠懇地說:“我跟將軍齊心協力攻打秦國,我自己也沒有想到能夠先入了關。我入關后,秋毫不敢取,登記吏民,封存府庫,以等待將軍,哪兒知道有人在您面前挑撥,這實在太可氣了!”
項羽見劉邦如此說,氣都消了。他說:“這都是你的部下曹無傷說的,要不我也不會這樣。”當天,項羽就留劉邦在軍營喝酒。酒席上,范增一再向項羽使眼色,要項羽乘機把劉邦殺掉,可是項羽只當沒看見。范增看項羽不忍心下手,就去找到項羽的堂弟項莊,告訴他找機會把劉邦殺了。于是,項莊過去敬了酒并舞劍助興,項伯看出項莊舞劍的用意是想殺劉邦,也拔起劍,兩人對舞。張良一看形勢十分緊張,便離開酒席,走到營門外找樊噲。
樊噲知情后,右手提著劍,左手抱著盾牌,直往營門沖去。項羽吃驚地問:“這是什么人?”張良替樊噲答道:“這是替沛公駕車的樊噲。”項羽說:“好一個壯士!”就吩咐侍衛賞他一杯酒、一只生豬腿。樊噲將他的盾牌倒扣在地上,把豬腿放在上面,拔出劍來切切就大口地吃了。樊噲氣憤地說:“當初,懷王跟將士們約定誰先入關,誰就封王。現在沛公先進了關不但沒有稱王,反而封了庫房,關了宮室,天天等將軍來。像這樣勞苦功高的人,不但沒受到什么賞賜,將軍反倒想殺害他!”項羽無法反駁,就說:“坐吧。”樊噲就挨著張良身邊坐下了。
過了一會兒,劉邦起來上廁所,張良和樊噲也跟了出來,勸劉邦趁機逃回灞上。于是劉邦留下一些禮物交給張良,要他向項羽告別,自己和樊噲則從小道跑回灞上去了。估計劉邦已走遠,張良才進去向項羽說:“沛公酒量小,剛才喝醉就先回去了。叫我奉上白璧一雙獻給將軍,玉斗一對送給范增。”項羽接過白璧,放在坐席上。范增卻非常生氣,把玉斗摔在地上,用劍把它砸得粉碎,說:“項羽真是成事不足,敗事有余。將來奪取天下的一定是劉邦,我們等著做俘虜就是了。”一場劍拔弩張的宴會,總算結束了。沛公回到軍中后,立即誅殺了曹無傷。