话说项梁拥立楚王的后代楚怀王熊心的时候,燕国、齐国、赵国、魏国都早已自己立下了国王,只有韩国没有立下后嗣,所以作为韩国贵族后裔的张良劝说项梁立了韩国诸公子中的横阳君韩成为韩王,项梁让张良担任韩国司徒跟随韩王收复韩国的土地。秦国当初在消灭韩国之后,就将韩国原先的领地设置为颍川郡。韩成与张良在西进复国期间,每次一占得几座城邑,就又会被秦军重新夺走。当项梁在定陶战败而死,韩成投奔了楚怀王。因此只剩张良带着军队游走在颍川郡一带流动作战。当刘邦大败杨熊之后从洛阳南出轘辕山行进时,张良领着一队兵马前来跟从刘邦。
随着陈留陷落,赵贲的溃逃,杨熊的被杀。秦廷在砀郡的统治彻底崩溃。而秦廷杀死败逃至荥阳的杨熊一行为,更是自毁门户,使得三川郡方向只剩下赵贲一个方面大将支撑。三川郡与颍川郡门户打开后,刘邦军开始分兵。首先是刘邦在击破杨熊军后即南攻颍阳,这一路主要有刘邦、周勃、樊哙、郦商。秦二世三年,四月。刘邦领军到达颍阳城下,从颍阳战后刘邦“屠之”的行为来看,颍阳的抵抗应当相当激烈。而随着颍阳的陷落,秦廷在颍川郡的统治也彻底瓦解。攻下颍阳之后刘邦又接着攻下了长社。另一路则由曹参率灌婴、傅宽等一路向西进发,与颍川郡的层层抵抗不同的是,在阳武秦军抵抗失败后,一直向西到缑氏附近的轘辕,基本上都没有什么抵抗。刘邦在张良的协助下拿下了韩地的轘辕关,转而拿下缑氏县(今河南偃师区)。这一路接连打下韩地的十多座城邑,还击溃了秦将杨熊遗留在这里的守军。刘邦攻取韩地阳城(今河南省郑州市登封市告成镇王城岗)期间,让张良凭借韩国司徒的身份去招降韩国旧地,得到韩国王室后裔韩信(后来的韩王信,非“三杰”韩信)的加入,并让他担任韩王成的将领。刘邦收复了韩国旧地之后,让韩王成留守韩国旧都阳翟,他带着张良继续向西进军,韩信(韩王信)也率领他的军队跟随刘邦。
就在刘邦向南阳的时候在进军途中,正好听说赵国别将司马卬打算率军渡过黄河进入函谷关。于是刘邦转而北向进攻平阴县,拿下平阴县之后呢就等于把这一个黄河的渡口给截断了,不让司马卬从此进入函谷关。攻下平阴县之后刘邦向南阳行进,他带着麾下曹参、周勃、樊哙、郦商、夏侯婴、灌婴等人分别在洛阳东面、尸乡北面与想要从开封回援洛阳的秦将赵贲所率领的秦军交战,这两战都以刘邦胜利而告终。既然赵贲已经被打败了,那么就继续攻洛阳吧,可这洛阳也是块难啃的骨头,高城深池的攻了许久也没能攻克。刘邦其实也是急着向攻入关中,因为西征之前楚怀王就曾约定,先入关中者就可以在关中称王。于是呢刘邦继续秉承“难啃的骨头从来不啃”的原则。兵锋一转,南下奔着南阳去了。在向南阳行进的路上还拿下了阳城,并且收编了阳城的骑兵部队。接下来就到了南阳的地界了,分别在犨县(故城址在今鲁山县张官营镇西约2.5公里)东面、阳城东面击破南阳郡守吕齮,吕齮退守宛城(就是今天的南阳市宛城区)。
本来刘邦又想绕过宛城继续西进的,毕竟约定好了先入关中者可在关中称王嘛。可这回张良实在是看不下去了,劝说刘邦说道:“您虽然着急想进入关中,但是现在的秦国兵马还是很多,而且都是据守在险要的关隘。如今要是不拿下宛城,等您率兵西进的时候他们从背后袭击我们,前面又有秦兵据守险要关隘阻挠,我们的处境就很危险了。”于是呢刘邦听从了张良的建议,连夜率兵从另一条路返回,而且还变换了旗帜(咱们之前说过,刘邦的部队旗帜是赤红色的,这回为了打个出其不意旗帜颜色也换了。至于是换成啥颜色咱就不知道了)回过头来进攻宛城,在天还蒙蒙亮的时候,就已经将宛城给围的是里三层外三层的了。刘邦让樊哙为先锋,樊哙的先锋部队攻陷了城门,率先登城了。南阳郡守吕齮听说樊哙已经破城了,便想要自刎了事。这时他有一个门客叫做陈恢的阻止了他。陈恢说:“您先别着急着死,您可以向刘邦投降啊,若是他不肯再死也不迟。”于是吕齮就让陈恢为使者,越过城墙去见刘邦。陈恢见到刘邦后说道:“臣下听说沛公您西征之前有约定先入咸阳者,可在关中称王。如今您留守宛城,宛城乃是南阳郡这样一个大郡的都城,链接着数十座城池,百姓众多,粮食储备无数。宛城的官吏认为如果投降,也是必死无疑的,所以他们都登城坚守。现在您如果停止西进的步伐,强行进攻宛城,士兵死伤无数。如果您不进攻宛城引兵西进,那么宛城必然成为您的后顾之忧。这样的话恐怕您先是失去了咸阳之约,后又留下了宛城这样一个强大的后患。”刘邦说:“那我该怎么办呢?”陈恢继续说道:“为了您着想,不如约降他们封赏他们的郡守,让他们留守宛城,您领着宛城的兵士与您一起西征。这样的话,以后其他城池听说这件事之后,也会对您开城而待,您的西征就会畅通无阻了。”刘邦一听完,赞扬道:“您这计策真是太好了!”所以刘邦就同意与吕齮约定了举城投降,并且封吕齮为殷侯,封陈恢为千户侯,至此整个南阳郡算是全部平定了。
在刘邦招降宛城之后,率军西行,一路上各地那是纷纷归降。大军行至丹水(今河南淅川)的时候,高武侯鳃、襄侯王陵也帅军归降,加入了刘邦所率领的西征大军攻下了西陵、胡阳。在攻胡阳的时候遇到番君吴芮的麾下将领梅鋗也率军到这里,刘邦与梅鋗合军又攻下了析、郦等县城。
这里咱们先说一说番君吴芮吧。吴芮他是番阳(今江西鄱阳县)人,他这个人在江湖上很是得人心,原先他是番县的县令,号称“番君”。在秦二世元年七月(前209年8月9日至9月7日期间),陈胜等人在大泽乡起事之后,各地也都纷纷起义响应。这时逃亡在长江聚众成为群盗的英布就来找到了吴芮,协同吴芮的部众一起起义反叛秦朝,两人聚集起几千人的队伍。吴芮还把自己的女儿嫁给英布为妻。于是吴芮率领越人起兵响应各地的反秦斗争。在后来项羽分封诸王的时候,被封为衡山王。他麾下的将领梅鋗也因为功劳被封赏食邑十万户,汉朝成立后刘邦又封他为长沙王,在他死后他儿子吴臣继承了他的王位。
刘邦西征大军一路势如破竹,所过之处在宛城之后各地更是望风而降,大军现在已经抵达了武关东面了。刘邦于是派魏人甯昌为使者出使秦廷,这时候章邯也已经投降了项羽。而秦国朝廷之上赵高在接见了刘邦的使臣之后就派人弑君,杀了秦二世。并让甯昌回报给刘邦,说想要跟刘邦平分关中。刘邦认为赵高在使诈,所以听从张良的计策。让郦食其和陆贾去游说劝降武关的守将,许诺给他们利益,然后趁机偷袭武关得手。在这之后刘邦自己接着引军西进,另一面又让郦商率一路军去攻克了汉中、巴、蜀等地。
而赵高这边在杀了秦二世胡亥之后,本来是想着自己登基当皇帝的,但是又怕文武百官不会听从他。于是他就立了子婴为秦王。子婴早在当公子的时候,就已耳闻目睹了赵高的种种罪行。被赵高推上王位,知道自己不过是一个傀儡罢了。子婴不愿再重蹈胡亥的覆辙,便与自己的贴身宦官韩谈谋划斩除了赵高并且灭了他的三族。子婴在杀了赵高之后马上就派兵去峣关(故址在西安市蓝田县城南,因临峣山得名)去镇守。刘邦领军到此地时本想发动进攻,直接攻城。但是张良认为秦军目前以逸待劳,战力还是很强的,不能草率的进攻。建议刘邦对守将许诺给他重利,招降他。刘邦就派人去跟守将说,秦王朝马上就要灭亡了,你们还在这里苦守与天下人为敌吗?不如引兵归降,我给你封侯拜相荫泽子孙这样不好吗?于是峣关的守将决定归降刘邦,派人来回复刘邦说我们请求投降。刘邦刚想要答应下来,张良又来了,他对刘邦说:“这是将领因为您许给了他们重利所以投降,恐怕士兵们未必会听从他们的安排跟着投降。不如现在趁着他们懈怠的时候攻击他们。”于是刘邦又听从张良的建议,带着军队绕过峣关,跨越蒉山先是在蓝田县的南边打败了秦军,后又在蓝田县的北面再次大败秦国军队。这两次大败秦军之后,秦朝也彻底的丧失了抵抗诸侯的力量。儿刘邦也先于其他诸侯率先入关驻军霸上。
秦王子婴元年(前207年)十月,秦王子婴搭乘着一辆又白马拉的朴素的马车,用丝带绑在自己的脖子上,手里捧着皇帝的玉玺符节,在轵道旁边向刘邦投降。一统六国的秦王朝仅仅过了十五年便灭亡了。