公元前 208年 9月,刘邦率领砀郡兵,并在一路上收容陈胜、项梁部队的散兵,以曹参为前锋,进攻东郡取得胜利。一路上无大战,在取得了几个小战役的胜利后,刘邦两攻昌邑未果。正准备再次进攻时,项羽在巨鹿大破秦军,擒王离、破章邯。刘邦担心项羽乘胜向关中进发,便也不再与小股秦军纠缠,转而挥师向西,率大军挺进到雍丘与陈留一带。
在陈留附近,刘邦采纳郦食其的计谋,攻取了陈留。至此,刘邦西征的前哨战取得了成功。攻取陈留使刘邦建立了西征的立脚点,也获得了大批的粮饷军械。刘邦一路收编陈胜、项梁残部和其他义军,又招揽了大批人才,实力得到大大增强。
刘邦率领部队占领陈留前,得知北伐的楚军已解巨鹿之围,项羽因为巨鹿之战而声名大振。刘邦不敢有片刻的懈怠,率领大军继续向西挺进,这样做是为了首先进入关中。时至 3月,刘邦大军由陈留之路北上准备进攻开封。秦将率兵守城,城坚而难以迅速攻下,刘邦遂率军转向西进,与秦将杨熊军会战于白马,又战于曲遇,俘虏了秦军司马及御史各一人。杨熊战败后,退回三川郡。秦二世胡亥遣使将杨熊以征战不力之名斩杀。刘邦没有直接进攻荥阳,而率军改攻颍川郡。 4月,刘邦率大军攻克了颍川郡,派亲信张良主持颍川郡军政大事,基本收复前韩国属地。此时赵军大将司马卬在黄河对岸企图渡河抢先入函谷关。刘邦为阻止司马卬而率大军北攻平阴,断绝赵军渡河之路,阻止其向关中进展。刘邦阻止赵军渡河后,转而率大军前往洛阳,在洛东与秦军发生了激烈的战斗,遭受了一些损失,不得已退到阳城,转向南阳郡前进。刘邦大部队南移,韩王成奉命留守阳翟,掌管前韩国属地,张良则率部分军队随刘邦继续前进。 6月,刘邦与南阳郡守军大战,击溃对方的抵抗,攻占了整个南阳郡。南阳郡守将退走宛城,据城固守。刘邦久攻宛城而不克,急于引兵西进。张良则建议说,虽然急于入关的心情可以理解,但是秦兵尚众,而且往往据险自守。如若贸然置宛城守军于不顾,将来很有可能受到秦军的前后夹攻。