汉元年(前206年)十一月,项羽率诸侯联军攻取秦地到达函谷关,没料到有兵守关,不得进入。又听报告说刘邦趁他在河北同秦军决战时,已攻破关中,并派兵驻防,准备称王,项羽大怒,命令当阳君英布率军攻破函谷关。项羽随即带兵进关(今陕西临潼),驻扎于鸿门。
当时,沛公刘邦驻军于咸阳东南的灞上,没与项羽见面。沛公的左司马曹无伤派人向项羽密报说:“刘邦打算在关中称王,要任秦王子婴为相,还想将秦的全部珍宝据为己有。”项羽发怒,下令犒赏三军,明日一早出兵攻击刘邦的军队。
项羽有兵四十万人,停驻在新丰鸿门,刘邦只有十万人,两军实力悬殊,距离也不过四十里。范增向项羽献策说:“刘邦以前在关东时,贪财好色,可自从入关后,对财物丝毫不动,对美女也不接近。从这些可看出他的志向不小。我命令人观望,发现沛公头上的云气呈龙虎五彩的景色,这是天子之气。要赶快攻打刘邦,千万不要坐失良机。”
楚左尹项伯是项羽的叔父,早年与留侯张良私交好。张良此次随刘邦入关,正在军营。项伯便趁夜骑快马飞奔到刘邦驻地,私下通知张良,项羽第二天要进攻沛公,并要张良和自己一起逃离。张良说:“我是代韩王来送刘邦的,如今刘邦有危难,我私下逃走,这是不义的,我不能不报告刘邦。”张良入见刘邦,报告了项伯所说的事。刘邦听后大惊说:“这如何是好?”张良说:“派兵驻守函谷关的主意是谁出的?”刘邦说:“是一个混蛋建议我守函谷关,不让诸侯入关,这样秦地就属于我了,就可以为王,所以我采纳了他的建议。”张良又说:“您估计我们的军队能够抵抗项羽的攻击吗?”刘邦茫然地说:“我们的军力不如项羽,事到如今该怎么办?”张良说:“这事只能由刘邦亲自向项羽说清,说刘邦不背叛项羽。”刘邦问:“你怎么与项伯有如此深交?”张良说:“从前在秦朝的时候,项伯和臣有交往,项伯杀人,臣设法救了他,如今的事幸亏他告诉我。”刘邦又问:“项伯和你谁年长?”张良说:“项伯年长。”刘邦说:“请他进来,我要用兄长的礼节招待他。”
于是张良请项伯入见刘邦,刘邦自己举杯向项伯敬酒,并定下儿女婚姻。刘邦说:“我入关后,一切如旧,秋毫未犯;吏民造册存籍,府库公物都加封,只等项将军来接收。因此才派兵守关,防备盗贼入侵,还可预防突发变故。请兄长千万向项羽将军进言,我在这里日夜盼望项将军早日来。刘邦不敢叛道义,更无反叛之心。”项伯答应了刘邦,并嘱咐刘邦,明天要早点来向项羽谢罪。刘邦答应。项伯于是乘夜回到项羽营中,把刘邦的话详细地向项羽报告,随后又说:“假若不是刘邦先击破关中秦军,将军怎能直入关中呢?现在刘邦有入关破秦的大功,不如因此而善待刘邦。”项羽以为项伯言之有理,便答应善待刘邦。
次日清晨,刘邦只带随从骑士百余人来到鸿门,拜见项羽,并谢罪说:“我和将军联合攻秦,将军战于河北,我战于河南。我自己始料未及先破秦入关,而现在能在这里与将军会面。现在有小人间隙我和将军的关系。”项羽说:“这是您的左司马曹无伤说的,否则,我何至于如此?”
项羽当即留刘邦一起饮酒吃饭。项羽和项伯东向坐,亚父范增向南坐;刘邦面向北;张良西向坐。范增屡次使眼色示意项羽杀刘邦,又举起所佩带的玉环,连作三次,要项羽速作决断,项羽却默然无任何反应。范增看到情形不对,起身出去叫来项庄,说:“君王为人心肠太软,不忍心下手。你进帐去,上前向刘邦敬酒,然后就请求在座前舞剑。乘舞剑之时,刺杀刘邦于座上。一定要除掉刘邦,否则,你我这些人都将被刘邦俘虏!”于是项庄进入帐中,向刘邦敬酒,敬酒完毕,项庄说:“君王和刘邦饮酒,军中没有可供娱乐的,请准许我作剑舞,以娱宾客。”项羽说:“好!”项庄即拔剑起舞,项伯看出项庄的用心,也拔出剑来舞,多次用自己的身体掩蔽刘邦,使项庄没有机会刺杀刘邦。
张良看情况不妙,忙起身出帐,到军门找到樊哙。樊哙问张良:“今天的事情怎样?”张良说:“十分紧急!现在项庄拔剑起舞,但用心是刺杀刘邦!”樊哙说:“这太紧张了,我进去和刘邦同生死!”于是便带剑、持盾进入军门。守卫的兵士交戟阻拦,不让他进去,樊哙持盾牌掩着身体面向士兵撞了进去,士兵倒在地上,樊哙进入帐中。樊哙面对项羽,张圆了眼睛,怒视着他,头发都竖起来,眼角也睁裂了。项羽大吃一惊,按剑而起,大声问道:“来客是何人?”张良说:“他是刘邦的随身侍卫樊哙。”项羽说:“壮士!赐他酒!”左右递过酒,樊哙拜谢,起立,一饮而尽。项羽又说:“赐给他一只猪腿,左右又送过去一只大猪腿。”樊哙把盾覆在地上,把猪腿放在盾上,拔剑切着肉大口嚼起来,接着吞咽下去。项羽看着樊哙,说:“真是壮士!你能再喝酒吗?”樊哙大声说:“臣连死都不怕,一杯酒还有什么可推辞的!现在秦王暴虐无度,杀人如麻,用刑最残酷,天下的人苦痛不堪,纷纷起来反秦。楚怀王和诸将约定:先破秦入咸阳的为王。如今刘邦先破秦入关,把一切财产都封闭,驻守灞上只等大王前来接管。如此的功劳,没有被封侯,大王却听信小人谗言,要杀有功之人。这样的作法不过是继暴秦者而已!”项羽无言以对,只说:“你坐!”樊哙便随张良坐在一起。稍过片刻,刘邦见情势紧张,便以小解为借口,走出帐外,暗中召呼樊哙也出来。
刘邦出帐后,项羽便派都尉陈平请刘邦回去。刘邦和樊哙商议说:“我现在应该走了,但是出来的时候没告辞,怎么办?”樊哙说:“作大事的时候,不必太顾虑小节,大礼当前,无须拘执细小的谦让。如今人家是刀俎,我们是鱼肉,正等待人家来宰割,事情发展到如此地步,还讲什么礼节?”于是,刘邦决定立刻逃走,令张良留下向项羽辞谢。张良问:“刘邦今天来时带了什么礼物?”刘邦说:“带来白璧一双,准备献给项羽;还有玉斗一双,是赠给亚父的,但看他们正在发怒,我不敢献,你替我献给他们吧!”张良答应了。
这时项羽的军队在鸿门,沛公的军队在灞上,两地相距40里。刘邦留下车马随从,独自一人骑马而去,樊哙、夏侯婴、靳强、纪信等人同行保护刘邦。四人持剑盾从郦上经芷阳,抄小路走,刘邦向张良说:“从这条小路到我驻处不过20里。你估计我到军中,项羽来不及追赶我时,就进帐向项羽辞谢!”
刘邦走后,张良估计他已到军营,便进帐向项羽告罪说:“沛公不胜酒力,支持不住,所以没有进帐向大王告辞就走了。谨使张良奉白璧一双,拜献大王足下,玉斗一双再拜献大王足下。”项羽说:“沛公此时在哪里?”张良说:“沛公听说大王对沛公有督责之意,甚为恐惧,故先行至军中了!”项羽接受了白璧放在座上,范增接过玉斗放在地上,拔剑将玉斗击碎,既恨又怒的叹息道:“唉!这些无知之辈,不足以同谋大事!夺项王天下的人必定是刘邦!我们这些人都要做刘邦的阶下囚了!”
沛公刘邦回到军中,立即杀了曹无伤。