项梁下令楚军分军,以刘邦、项羽领兵,率楚军一部攻城阳,刘项二人率军攻下城阳,屠之。然后追击秦军至濮阳东,再次大破秦军,秦军这时得到增援,军势再次振兴,据守濮阳,放水环绕城池。刘项二人于是绕过濮阳,转攻定陶。定陶未攻下后,又向西攻打雍丘,刘项两军大破秦兵,刘邦麾下曹参,斩杀三川郡的郡守李由,并俘虏秦侯一人。
正当刘项两军进攻陈留之时,章邯大破项梁于定陶,项梁战死。刘项二人大惊,在商量后决定放弃陈留,还军东归。刘项二人分兵,项羽军驻彭城西、吕臣军驻彭城东,而刘邦军驻砀县。项梁之死,使诸侯震怖,秦军挟战胜余威常追亡逐北,章邯经过连番胜利,认为楚国已不足虑,北上进攻赵国,攻下邯郸后把民众都迁徙到河内,并毁掉邯郸的城墙。而赵军退守巨鹿,章邯率军进围赵王歇与赵相张耳于巨鹿。
楚怀王把都城由盱眙迁至彭城,将吕臣与项羽的军队合并起来自己统领,封刘邦为武安侯,升任砀郡长,统率砀郡兵马;项羽为长安侯,任鲁公。经过一番调整之后,楚国局势稳定下来,刘邦此时已统筹整个砀郡旧魏地区兵力,其地位实际比项羽的县公要高。
与此同时,被困于巨鹿的赵王歇与张耳多次遣使向楚国求援,楚怀王答应救赵。楚国北路军以宋义为主将,西路军以刘邦为主将。楚怀王与诸将约定:谁先攻入并平定关中,谁就可在关中称王。
刘邦军往西攻城略地,一路收集陈胜、项梁的散卒,经由砀县到达成阳县,先在成武县南面攻破东郡的郡尉所率领的部队,又在成阳县南面攻打王离军,在杠里与秦军对垒相持,攻破秦二军、河间守军,刘邦率领曹参、樊哙、灌婴、傅宽、郭蒙等,与秦将王离交战,大破其军。刘邦引兵西进,在昌邑遇到彭越的部队,遂与其合力进攻昌邑,没能攻下,只得返回栗县。在栗县时,刘邦遇到刚武侯,吞并他的部队,刘邦军队增加了四千多人,接着与魏将皇欣、魏申徒武蒲军合攻昌邑,又没攻下,刘邦决定舍弃昌邑不打,率军西行。
刘邦西经高阳县,郦食其是高阳里的门卒,认为经过高阳的军队很多,只有刘邦拥有很大的器量,于是求见刘邦。此时刘邦坐在床上,令两个女子替他洗脚,郦食其未行拜见之礼,拱手长揖说:“足下要是真想推翻无道之秦,就不应坐着来接见长者。”刘邦听后而起,整衣表示歉意,请入上座。郦食其建议刘邦袭击陈留。刘邦采纳郦食其的计策,袭击陈留县,得到秦军囤积的粮草,刘邦封郦食其为广野君,任命他弟弟郦商为将,领陈留之军。刘邦军在亳县南部与秦军交战,又往西到达开封,秦将赵贲率领秦军在开封北面与刘邦交战,刘邦携麾下曹参、樊哙、夏侯婴、灌婴、傅宽、靳歙等大败赵贲。
赵贲兵败退守开封城,郦商率领陈留县兵,与刘邦、曹参一同包围开封城,没有攻下。刘邦转而西进,率领麾下曹参、樊哙、夏侯婴、傅宽、郭蒙等人在白马、曲遇东面与秦将杨熊交战,大破杨熊军,曹参俘虏秦国司马、御史各一人;夏侯婴累计俘虏六十八人,收降士卒八百五十人,并缴获官印一匣。刘邦部队又在阳武再次击退杨熊,杨熊败走逃至荥阳,被秦二世派人杀死。
张良早前劝项梁立韩成为韩王,并随韩王成西至韩地略地,但接连数月所略之地每占辄失,始终没打开局面,因此游兵于颍川郡一带。当刘邦从洛阳南出轘辕山行进时,张良领着一队兵马前来跟从刘邦,刘邦向南攻取颍阳县,屠灭全城。接着攻打长社,凭借张良的协助攻占了韩国的轘辕关,又夺取缑氏县,接连打下韩地的十多座城邑,击破了秦将杨熊遗留的守军。
刘邦攻取韩地阳城期间,让张良凭借韩国司徒的身份去招降韩国旧地,得到韩国王室后裔韩信的加入,并让他担任韩王成的将领。刘邦略定韩国一带,让韩王成留守韩国旧都阳翟,带着张良继续进军,韩信也率领他的军队跟随刘邦。
赵国的别将司马卬,正想渡过黄河进入函谷关,刘邦向北拿下平阴县,截断黄河渡口,刘邦向南进军,携麾下曹参、周勃、樊哙、郦商、夏侯婴、灌婴与秦军在洛阳东部、尸乡北部交战,再次大破赵贲大军。刘邦击溃赵贲后,继续进攻洛阳,没能攻克,转而南下阳城,收编城中马匹骑兵。往南攻打南阳郡,在犨县东面、阳城东面击破南阳郡守吕齮,吕齮退守宛城。
刘邦想绕过宛城直接西进,张良劝道:“您虽欲急入关,秦兵尚众,距险。今不下宛,宛从后击,强秦在前,此危道也。”于是,刘邦在夜晚引兵还攻宛城,变更旗帜,天未明,就将宛城团团围住。曹参、樊哙领军攻打宛城,先登陷阵。吕齮想要自杀,他的门客陈恢加以劝阻,并出使楚营,与刘邦约定举城归降,并建议刘邦带着降兵西进,留下郡守守城,刘邦于是封吕齮为殷侯,封陈恢食邑千户。在刘邦平定南阳郡时,项羽和章邯在殷墟会盟,章邯率军投降项羽,项羽也带着降兵行进。
刘邦率军继续西行,各地没有不降服的,到达丹水,而高武侯鳃、襄侯王陵这时也加入刘邦所率领的楚军,攻下西陵、胡阳。并且番君吴芮的部将梅鋗也至此,与刘邦军联合,攻下析、郦等地。
刘邦所部楚军进兵至武关东面,派魏人宁昌出使秦廷,而这时章邯也投降了项羽。秦丞相赵高弑杀秦二世,令使者回报刘邦,想要和刘邦约定平分关中,刘邦认为赵高在使诈,于是听从张良之计,让郦食其、陆贾劝降武关秦将,趁此机会袭取武关。之后,刘邦一面率军西进,一面令郦商别将攻取秦的汉中、巴、蜀等地,接着刘邦军再在峣下击败秦军,进至秦都咸阳附近的蓝田。秦廷在组织了最后的力量,与刘邦军大战于蓝田,遭遇大败,此后,秦朝失去了所有的抵抗力量。
刘邦的军队先于各路诸侯到达灞上,秦王子婴乘素车、驾白马,用丝带系颈,手捧着皇帝的玉玺符节,在轵道旁投降,秦朝至此灭亡。刘邦进入了咸阳后,看着富丽堂皇的宫殿,刘邦有些留恋,准备就此住下,樊哙劝他注意天下还没有平定,别忘了秦的前车之鉴。刘邦根本听不进去,直到张良亲自来劝,他这才认识到了问题的严重性,率军退到了灞上。
刘邦到达灞上之后,便召集当地的名士,和他们约法三章:杀人者死,伤人和偷盗要受到相应的处罚。其他秦朝的苛刻法制一律废除,这使他得到了民心支持。
项羽率领诸侯军队抵达关中,范增劝他趁机除掉刘邦,项羽就下令准备,要在第二天进攻。这时的刘邦在兵力上,无法和项羽带领的诸侯国军队相抗衡,他只有十万军队,项羽有兵力四十万。项羽的叔父项伯,因与张良有老交情,连夜潜入营中劝张良走,以免开战被杀。张良不愿丢下刘邦,就将消息透露给了刘邦,惊慌之下,刘邦赶忙向张良要计策,张良让刘邦赶紧去见项伯,说明自己没有野心和项羽争夺王位。刘邦依计会见项伯,说明自己并无称王野心,并与项伯约为亲家。项伯当天夜里返回军营对项羽说:“刘邦不率先攻破关中,你怎么敢进入呢?现在别人有大功劳我们反而攻打他,不道义啊,不如就善待他吧。”项羽答应了。