刘邦率军继续西行,夺取了丹水(今河南淅川)。而高武侯鳃、襄侯王陵这时也加入刘邦所率领的楚军,攻下西陵、胡阳。并且番君吴芮的部将梅鋗也至此,与刘邦军联合,攻下析(今西峡县)、郦等地。
刘邦所部楚军进兵至武关东面,于是派魏人宁昌出使秦廷,而这时章邯也投降了项羽。秦丞相赵高弑杀秦二世,令使者回报刘邦,想要和刘邦约定平分关中。刘邦认为赵高在使诈,于是听从张良之计,让郦食其、陆贾劝降武关(今陕西丹凤县武关镇)秦将,趁此机会袭取武关。之后,刘邦一面率军西进,一面令郦商别将攻取秦的汉中、巴、蜀等地。接着刘邦军再在峣下击败秦军,进至秦都咸阳附近的蓝田。秦廷在组织了最后的力量,与刘邦军大战于蓝田,遭遇大败。此后,秦朝失去了所有的抵抗力量。
秦二世三年(前207年)十月,刘邦的军队先于各路诸侯到达灞上。秦王子婴乘素车、驾白马,用丝带系颈,手捧着皇帝的玉玺符节,在轵道旁投降。秦朝至此灭亡。
约法三章
刘邦进入了咸阳后,以“关中王”自居。看着富丽堂皇的宫殿,刘邦有些留恋,准备就此住下。樊哙劝他注意天下还没有平定,别忘了秦的前车之鉴。刘邦根本听不进去,直到张良亲自来劝,他这才认识到了问题的严重性。于是,刘邦率军退到了灞上。
刘邦到达灞上之后,便召集当地的名士,和他们约法三章:杀人者死,伤人及盗抵罪。其他秦朝的苛刻法制一律废除,这使他得到了民心支持。
鸿门之宴
这时,项羽在击败章邯后,也领兵直奔关中而来。范增劝他趁机除掉刘邦,项羽就下令准备,要在第二天进攻。这时的刘邦在兵力上无法和强大的项羽相抗衡,他只有十万军队,不可能战胜项羽的四十万精兵。最后是项羽的叔叔项伯“救”了刘邦:项伯和张良很要好,见项羽要进攻了,便连夜潜入营中找到张良,让他赶紧走,以免被杀。张良却说不能丢下刘邦,就将消息透露给了刘邦。惊慌之下,刘邦赶忙向张良要计策,张良让刘邦赶紧去见项伯,说明自己没有野心和项羽争夺王位。
刘邦依计约到项伯,说明自己并无称王野心,并于项伯约成儿女亲家。项伯当天夜里就返回了军营,他对项羽说:“因为沛公先行进入关中,为我们扫除了入关的障碍,我们这才能顺利地通过函谷关,沛公是有功劳的人,我们不应该猜疑他,应该真诚相待。”项羽听了,便决定不再进攻刘邦。
第二天,刘邦来到了项羽的军营,只带了樊哙、张良和一百名精锐亲兵。到了项羽的大帐鸿门,当面向迎接他的项羽赔礼道歉。项羽请刘邦入内赴宴,范增在酒宴上,一再示意项羽发令,但项羽却犹豫不决,默然不应。范增召项庄舞剑为酒宴助兴,趁机杀掉刘邦,项伯为保护刘邦,也拔剑起舞,掩护了刘邦,项庄的刺杀没有成功。后来刘邦借故离开,回到了大营。