怀王由盱眙迁都到彭城。吕臣驻兵于彭城之东,项羽驻兵于彭城之西,沛公驻兵于砀。魏咎之弟魏豹自立为魏王。闰九月,怀王合吕臣、 项羽所领之军归自己直接指挥,派沛公为砀郡长,加封武安侯,领砀郡之兵。任项羽为鲁公,加封长安侯,任吕臣为司徒,吕臣的父亲吕青为令尹。
秦将章邯在打败项梁之后,认为楚地的叛秦势力已不足为患,就渡河北上攻打赵王歇, 大败赵王歇。赵王歇退保钜鹿城,秦将王离兵围钜鹿。赵王多次求救于楚怀王,怀王就任宋义为上将,项羽为副将,范增为末将。领兵北救赵军。原先,怀王曾与诸将相约,谁能先平定关中就封之为王。这时期,秦兵强大,常常乘胜追击义军,诸将都畏其威而不敢入关。独有项羽恨秦军打败并杀死项梁,十分愤激,愿意和沛公西进入关。怀王的一些老将都说: “项羽为人?悍好杀,原先攻下襄城,襄城几无遗类,项羽所过之处都遭残灭。且楚军在多次进取中前楚王陈涉、 项梁都以失败告终,不如另派一位宽厚长者仗义西进, 告谕秦地父老兄弟。秦地人民受秦朝之苦已久,要是果真有一位长者领兵,秋毫不犯,秦都咸阳应当是能够攻下的。项羽不能担此任,只有沛公平日就是一个宽大仁厚的人。 ” 最后怀王不同意项羽西进,而派沛公西收陈涉与项梁的散兵。于是沛公从砀地出发,到城阳与杠里,攻打秦军防地,打败了两地守军。秦二世三年十月,齐将田都叛变齐王田荣,田都领兵帮助项羽救赵。沛公在成武打败了秦东郡尉的部队。十一月,项羽杀掉了上将宋义,兼并了宋义之军后渡过黄河,自封为上将军。宋义原有将领如英布等都归辖于项羽。十二月,沛公引兵到达栗县,遇见楚怀王将军刚武侯,也夺取了他所率的四千部队,并成一军和魏将皇欣、 武满的军队会合,进攻秦军,大败秦军。前齐王田建之孙田安领兵由济北跟随项羽救赵。项羽大破秦军于钜鹿,俘虏了秦将王离,秦将章邯逃走。
二月,沛公从砀出发北攻昌邑,遇见彭越。彭越帮助沛公攻打昌邑,没能攻下。沛公西经高阳, 郦食其是高阳里的门卒,他说: “经过高阳的将领甚多,我认为沛公具有大度。 ” 于是求见沛公。此时沛公坐在床上。令两个女子替他洗脚。郦食其未行拜见之礼, 拱手长揖说: “足下要是真想推翻无道之秦,就不应坐着来接见长者。 ” 沛公听后而起, 整衣表示歉意,请入上座。食其建议沛公袭击陈留。沛公委任他为广野君。封食其的弟弟郦商为将,领陈留之军。三月,攻打开封县,未攻下。领兵西向与秦将杨熊在白马县会战,又交战于曲遇之东,大败秦军。杨熊败走至荥阳, 秦二世派人将败军之将杨熊斩首示众。四月, 沛公南攻颍川,大开杀戒。接着运用张良的力量攻韩地。
此时任赵别将的司马?正打算渡黄河入函谷关,沛公就北攻平阴,截断黄河渡口。引兵向南,与秦兵战于洛阳之东,受小挫。就从頧辕险道到阳城,收取军中所需马骑。六月, 与秦南阳郡守齿 奇战于韜县之东,大败秦军, 占领了南阳郡,南阳郡守逃走,保守宛城。沛公领兵过宛城西出,张良谏阻说:“沛公虽然急欲攻入函谷关,而秦兵还很多,且负隅相拒。现在如不攻下宛城,要是强秦据守于我前,宛兵攻击于我后,这是一条危险的道路。 ” 沛公就在夜晚引兵绕道还攻宛城,偃旗息鼓,天未明,就将宛城围住了三层。南阳郡守想自刎, 他的亲信陈恢说: “还未到死的时候。 ” 于是陈恢越城出见沛公。他说: “小臣听说足下曾与人相约:先入秦都咸阳的尊之为王,现在足下在攻打宛城。宛郡有据点数十处,守卫的将士自以为投降必被处死,所以都登城固守。足下如果整日强攻,双方伤亡定会很多;要是放弃攻宛而引兵向西, 宛地的秦兵完全尾追于后。足下攻宛则延误了先入咸阳者为王之约,足下弃宛则留下了后有追兵之患。小臣为足下着想,不如允许宛城守军投降,封郡守为侯,仍令他驻守原地。将他的兵力调出一并向西。前方还未攻下的城邑,定会闻风响应而迎接足下。足下就会顺利通行而无后顾之忧了。 ” 沛公说: “很好。 ” 七月,南阳太守齿 奇投降,沛公封他为殷侯,封陈恢为千户。引兵向西,势如破竹。兵到丹水,秦高武侯鳃、 襄侯王陵归降。回师攻胡阳,遇番君别将梅軭,与他合攻折县、 郦县,都归降了。沛公命令军队经过之处不得掳掠,秦民十分欢迎,派魏人甯昌去秦地劝降。同月,秦大将章邯率领全军投降项羽,项羽封章邯为雍王。瑕丘公申阳攻下河南。八月, 沛公攻下武关。进入秦郊。
秦丞相赵高惊恐,就杀掉秦二世,派使来见沛公,想相约平分关中之地,沛公拒绝了。九月,赵高立二世兄之子子婴为
王。子婴诛灭了赵高, 派将军领兵据守山 尧关。沛公想发起攻击, 张良阻止说:“秦兵尚强,不可轻视。建议先派人在