楚怀王以陈婴为上柱国,项梁号武信君。
刘项合兵
立楚怀王后,项梁率军北上救齐赵,在亢父、东阿大破秦军。这时齐军因田间、田都、田角之故,引兵还齐。只有楚军追击秦军。于是项梁下令楚军分军,以刘邦、项羽为帅,率楚军一部攻城阳。
刘项二人率军攻下城阳,屠之。然后追击秦军至濮阳东,再次大破秦军。秦军这时得到补充,军势复振,守濮阳、环水。刘项二人不与之战,绕过进攻定陶。定陶未下,放弃,西攻雍丘(今河南杞县)。沛公将曹参大破秦兵,斩杀三川守李由,并俘虏秦侯一人。
之后,刘项二人还攻陈留,未下。这时秦将章邯大破项梁于定陶,项梁本人亦战死。刘项二人大惊,两人商量后决定放弃陈留,还军东归。刘项二人分兵,项羽军驻彭城西、吕臣军驻彭城东,而沛公军驻砀。
怀王迁都
项梁之死,使诸侯震怖。而秦军更是挟战胜余威常追亡逐北。章邯经过一连番胜利,认为楚国已不足虑,于是北上进攻赵国。攻下邯郸后迁其民于河内。而赵军退守巨鹿,章邯率军进围赵王歇与赵相张耳于巨鹿。
这时楚怀王把都城由盱眙迁至彭城,并项羽军与吕臣军自将。封项羽为长安侯,任鲁公;封沛公刘邦为武安侯,任砀郡长,将本部兵驻砀。以吕臣为司徒,其父吕青为令尹。
经过一番调整之后,楚国局势稳定下来。
沛公西征
赵王与张耳困于巨鹿,遣使至楚向楚国求救。楚怀王经过商议后答应救赵。但为了分散秦军力量,决定派一支部队西向直接攻秦。北路楚军以宋义为主将,西路军以刘邦为主将。
当时由于秦军军势正壮,楚国上下皆不看好西征,都不愿意领军西征。于是他们以沛公为西征军统帅西征,借口是刘邦为人宽厚,可以减少西进阻力。而项羽则因为叔父之死,积极要求随沛公西征。但楚诸老将皆以项羽为人“僄悍滑贼”及“所过皆残灭”不利于西征为由拒绝了项羽的要求,让他担任北路军的次将北上救赵。
两攻昌邑
沛公军由砀出兵,北上先行收集陈胜、项梁的散卒。至成阳,与秦军夹壁杠里。沛公军出击秦军,大破秦军,秦将王离逃走。接着,沛公引兵西进,遇彭越于昌邑(今山东巨野县大谢湖镇昌邑村)。两人合力攻昌邑,未下,沛公还军至栗(今河南夏邑)。
在栗,遇刚武侯,夺其军,沛公军队增加了四千多人。接着与魏将皇欣、魏申徒武蒲军合攻昌邑,又没攻下。沛公刘邦决定舍弃昌邑不打,率军西行。
高阳酒徒
刘邦行军至高阳,并访求贤士。正好沛公军队中有一骑士家在高阳,于是回家探亲。这时高阳人郦食其为其同乡,于是就请他代为向刘邦引荐自己。他对骑士说:“吾闻沛公慢而易人,多大略,此真吾所愿从游,莫为我先。若见沛公,谓曰‘臣里中有郦生,年六十余,长八尺,人皆谓之狂生,生自谓我非狂生。”骑士说:“沛公不好儒,诸客冠儒冠来者,沛公辄解其冠,溲溺其中。与人言,常大骂。未可以儒生说也。”郦食其对他说:“你就这样说。”
于是通过骑士引荐,郦食其见到了沛公。但刘邦在召见他时,正踞坐在床,令两女子给其洗脚。郦食大为满,长揖不拜,直接斥责道:“足下欲助秦攻诸侯乎?且欲率诸侯破秦也?”刘邦骂道:“竖儒!夫天下同苦秦久矣,故诸侯相率而攻秦,何谓助秦攻诸侯乎?”郦生曰:“必聚徒合义兵诛无道秦,不宜倨见长者。”于是刘邦起身道歉,整理好后以礼接待了郦食其。
当时,郦食其有个弟弟名叫郦商,陈胜起兵时,他亦聚数千人响应。郦食其归汉,郦商率其部下约四千多人加入沛公队伍。
再遇张良
郦食其劝刘邦进攻陈留,刘邦从其计,夺下陈留,得到大量补给。接着令郦商为将,进攻开封,未下。绕过西进,与秦将杨熊所率秦军大战于白马、曲遇,大败秦军。秦将杨熊败走。沛公军紧追其至白马,再次大破秦军,杨熊逃至荥阳,秦二世派使者斩杀杨熊。
消灭杨熊所部秦军后,沛公率军南下攻颖阳,屠之。而此时张良再次与刘邦相遇。之前,张良劝项梁立韩成为韩王,并随韩王成西至韩地略地。但是一年多来,所略之地每占辄失,始终没打开局面,因此游兵于颖川一带。
刘邦率军进至此,与张良的韩军合兵,攻轩辕(今河南登封市西北)略定韩地。赵别将司马卬欲渡河入关,刘邦率军北上,攻平阴,破坏渡口。南下与秦军再战洛阳东,不利,南下阳城,收取城中军马。与南阳守齮战于犨(今洒南平顶山西南)东,大破南阳秦军。
楚军追至南阳,想绕过直接西进。张良劝道:“沛公虽欲急入关,秦兵尚众,距险。今不下宛,宛从后击,强秦在前,此危道也。”于是刘邦还攻南阳。南阳守见楚军去而复返,并包围宛城。于是想自杀。于是他的门客陈恢劝他不要先死,并出使楚营。双方约定后,南阳守投降。
夺取关中
刘邦率军继续西行,夺取了丹水(今河南淅川)。而高武侯戚鳃、穰侯王陵这时也加入刘邦所率领的楚军,攻下西陵、胡阳。并且番君吴芮的部将梅鋗也至此,与沛