刘邦让军队在阳城稍事休整,便和张良一道率军向武关进发。阳城属秦朝的南阳郡管辖,南阳郡守吕齮当然不想放刘邦过去。刘邦集中骑兵部队在犨县(今河南平顶山市南)东郊与吕齮展开激战,吕齮战败,退守宛县(今河南南阳市)。刘邦就此认为吕齮已是战败之军,没有必要再进攻宛县,那样会延误他入关的时间,于是,打算放弃宛县,率军继续西进。
然而,张良认为刘邦这种做法非常冒险,因为把敌人留在后方,万一在前面遇到劲敌,一旦失利,又会陷入腹背受敌的境地。为了让刘邦放弃这种冒险的做法,张良对刘邦说:“沛公现在虽然急于进入关中,但是不能忽视我们所面临的现实,眼下秦军人数众多,战斗力不弱,他们到处据险而守,阻挡我军前进。现在如果我们不攻下宛县就贸然西进,如果前面还有更强大的秦军在等待着我们,一旦战况不利,我们势必将陷入进退维谷的境地。我们千万不要冒这样的危险,请沛公三思。”
在关键时刻,刘邦又体现了他从善如流的本色,很爽快地采纳了张良的建议,连夜率军从别的道路返回宛县,并采用张良之计更换军队的旗帜,将宛县围了三层。天亮了,宛县守军见城池已被一支旗帜不同于先前那支军队的起义军包围,误认为这是另一支起义军。
宛县再次被包围,看来起义军不拿下宛县誓不罢休,吕齮觉得守城无望,想自杀殉国,但是他的部下陈恢却阻止了他。陈恢劝他说:“将军先不要忙于自杀,让在下想一想办法,如果确实没有解救的办法,那时将军再自杀也不迟。”
其实,陈恢也没有什么高招,他只是想借反秦起义军急于进入关中的这一心理,为吕齮的投降讨价还价而已。陈恢逾城来到城外,径直去见刘邦,对刘邦说:“我听沛公在西征时,怀王与诸将有约,先破关进入咸阳的封他为关中王。宛县是南阳郡的郡城,而南阳是大郡,下辖县城几十座,人口众多,粮草充足。郡守吕齮认为投降义军会落得被处死的下场,所以坚决不投降,誓与宛县共存亡。沛公如果强攻宛县,那么不但会付出重大的伤亡代价,而且陈兵于坚城之下也会稽延时日;如果沛公不攻下宛县便继续西进,那么宛县郡守吕齮必然会率军尾随在你的后边,相机进攻。这样一来,沛公如果要强行攻下宛县,然后再西进入关,势必会延误先进入关中占领咸阳的时机;如果放弃宛县不攻,贸然西进,那么又有强敌在后,随时有被前后夹击的危险。因此,沛公现在其实处于进退两难的境地,因此,在下斗胆向沛公建议,当务之急最好的办法莫过于劝降宛县的守军,对郡守吕齮封以高官,让他为义军驻守宛县,这样不但能加快西进的步伐,而且还可以征调他的兵马,扩充西征军的实力。更重要的是如果沛公在宛县开了优待降将这样的先例,那么在西进途中,其他地方的守军将领将不再有太多的顾虑,听到义军到来,彼此都会争相打开城门迎接沛公,那时,沛公将不用费一兵一卒之力,就能使西征的道路畅通无阻,很快进入武关,到达咸阳。”
陈恢的这一席话说到了刘邦的心坎上,看来这个陈恢的确是位称职的谋士。他既了解刘邦现在的处境,又很熟悉此时秦朝各地方官吏的心态。在那些地方官吏看来,秦王朝这座大厦即将坍塌,这是不容置疑的问题,他们看不到自己的前途和出路在哪里。他们之所以还要拼死抵抗,是因为他们过去为秦王朝卖命,作恶多端,怕放弃抵抗以后仍然得不到起义军的谅解,并对他们进行报复。
陈恢的一席话也印证了张良的见解,对秦军作战并不是单纯的军事行动,也是一次周密的政治行动。在发动军事攻势的同时,还要加强政治攻势。正因为有张良这样的人时时提醒,所以在楚汉相争中,刘邦一直比较重视政治攻势。尽管他在军事上屡战屡败,但项羽始终拿他没有办法,因为他在政治上赢得了人心。
刘邦听了陈恢的意见,又征询了张良对陈恢意见的看法,张良说这是个好办法,可以立即照办。于是刘邦答应了陈恢的要求,接受驻守宛县的秦军投降,并保证优待他们,同时封吕齮为殷侯,封陈恢为千户。
宛县是刘邦西征途中继攻占颍川郡的阳翟后,占领的第二个郡城。但颍川郡是个小郡,地位远不如南阳郡重要。刘邦占领宛县,不但打开了进入武关的门户,而且找到了一条用政治手段解决军事问题的途径。
宛县问题解决以后,刘邦立即率军进攻丹水(今河南淅川县西),果然,由于有了宛县的先例,丹水的秦军守将高武侯戚鳃、襄侯王陵率军投降。
丹水已经靠近武关,不过张良建议刘邦不要急于进攻武关,应在进攻武关之前先解除那些有可能来自后方的威胁。于是刘邦又率军向东南进攻胡阳(今河南唐河县南),在这里他遇到了参加反秦起义的秦番阳令吴芮派来的部将梅赜,梅赜此来的任务就是策反秦军将领。于是刘邦和梅赜联合行动,迫使析县(今河南淅川县北)、郦县(今河南南召县南)的秦朝守军投降。至此,刘邦基本上清除了南阳郡所辖地区的秦朝武装力量,为西入武关解除了后顾之忧。