刘邦采纳张良的建议,乘夜从另一条路线返回,拂晓前率大军直逼宛城城下,围困宛城三个月。郡守眼见弹尽粮绝,想自刎,其门人陈恢劝其出城投降。郡守接受劝告,向刘邦提出 “约降封守 ”,刘邦应允,当即将南阳郡守封为殷侯,奖励陈恢千户。南阳郡既降,关中各郡多不战而降。
刘邦奉楚怀王之命,率军西征,从公元前 208年 9月开始,前后只用了一年多的时间,就接连攻克了泗水、砀、东郡、三川、颍川、南阳等郡,并突破武关,直逼咸阳。
刘邦之所以能在如此短的时间内就取得如此辉煌的战绩,从客观条件来看,主要是由于当时秦军主力部队均已结集于河北,并先后被项羽所消灭。刘邦在进军关中的途中,除了受到小股秦军的微弱抵抗外,几乎没有遇到大的阻力。这是历史的机遇,但能捕捉到这种难得的机遇成就大业,则离不开刘邦及其谋士的作为。刘邦知人善任,从善纳谏,西征路上不断扩充军队,积聚力量,所率军队纪律严明,与民秋毫无犯。作战时,刘邦还能避实就虚,一步步分化瓦解秦军,善于迂回突袭,各个击破。这些都是他克敌制胜的重要因素。
刘邦西征在一年内取得了决定性的胜利。项羽消灭王离、章邯的军队之后,也加紧向西进军。正当秦军在关中处于南北两面夹击之时,秦统治集团内部的矛盾也发展到互相残杀、不可收拾的地步,这就更加速了它的灭亡。
刘邦大军进军关中期间,严令禁止烧杀掳掠,军队纪律严明,深受关中人民的欢迎。此时,章邯下辖的秦军主力已向项羽投降。 8月,刘邦攻克武关,直逼咸阳。秦朝廷内发生政变,宦官赵高杀死了秦二世胡亥,立扶苏之子子婴为秦王,由于四下战乱,地盘缩小就取消了秦皇帝的称号。赵高派人前往与刘邦议和,子婴不愿受赵高控制,更痛恨其狡诈,与其两子密议后设计诛杀了赵高,并灭了赵高的三族,然后立即调兵遣将,加强秦军在峣关的守备,以阻止刘邦大军进峣关。
刘邦率军进至峣关下,想立即攻关,但张良建议要智取,不要强攻。张良对刘邦说: “秦军尚且很强,不能轻视。沛公可以命陆贾等人拿大批金银珠宝诱降秦军守将。 ”
刘邦采纳了张良的建议,秦将果然抵不住金钱的诱惑,投降了刘邦,并愿意与刘邦合兵共袭秦都咸阳。这时,张良又建议说: “秦守将虽然同意投奔我们,恐怕士兵们并不一定愿意。如果士兵们不愿意,那我们也很危险,不如乘其不加戒备的时机歼灭他们。刘邦认为张良的看法很有道理,于是率大军绕过峣关,翻越群山,下令所过之处不得掠夺百姓,关中百姓无不欢喜。秦军没想到刘邦有此一招,正值懈怠之时,刘邦得以大败秦军于蓝田,又与秦军在蓝田以北发生激战,再次将秦军咸阳主力击败。