항우의 추격을 당하던 유방은 진평(陳平)과 기신(紀信)의 책략으로 사지에서 탈출해 관중으로 돌아온 후 숙하(肅何)가 준비한 병사와 물자를 바탕으로 다시 재기를 도모했다. 이 때 영포를 자신의 진영으로 끌어오는데 성공했다. 같은 시기 유방의 장군이던 한신(韓信)은 유방을 배신한 서위(西魏)를 공격해 이를 점령하고 왕이던 위표(魏豹)를 생포해 유방에게 압송했다. 한신은 장이와 유방의 명을 받고 조(趙)나라로 쳐들어가 정형전투에서 2만의 적은 병력으로 배수진을 창안해 조나라군 30만을 격파하고 조나라를 점령했다. 그리고 조헐과 진여를 처형하고 장이를 조왕으로 옹립했다. 그 후 한신은 연(燕)나라 왕인 장도를 항복시키는데도 성공했다. 한편 기원전 203년에 유방은 역이기(酈食其)를 제나라에 보내 평화협상을 이끌어 냈지만 한신의 책사 괴통(蒯通)의 제안을 받고 곧바로 제나라로 공격해 들어갔다. 한나라에 속았다고 생각한 제나라 왕 전광은 역이기를 끌어내 사형에 처했다. 제나라 전광은 초(楚)나라에 원군을 구해 장군인 용저가 파견되어 왔지만 한신은 이 초군마저 패주시켰다. 이 공적으로 한신의 위상은 높아져 유방에게서 훗날 제왕(齊王)의 자리를 요청해 이를 승인받았다. 이렇게 되자 한신은 유방의 장군이지만 또 하나의 독립세력이 되었다. 항우도 이를 우려해 한신을 자기 편으로 끌어들이려 무섭을 보내 협상하려 노력했지만 한신은 자신이 항우에게서 냉대받은 일과 유방이 도와준 일을 떠 올려 이를 거절했다. 괴통은 한신에게 스스로 독립하여 천하를 삼분으로 나누라고 설득했지만 한신은 유방의 은혜를 거절할 수 없다하여 그를 물리쳤다. 괴통은 후환이 두려워 스스로 미친 척하고 한신 곁을 떠났다. 유방은 팽월에게 명령해 항우의 후방을 교란시키게 하여 항우군을 팽월군 쪽으로 이동하게 했다. 그 사이 유방은 보급기지였던 오창(敖倉)의 곡식을 확보한 뒤 형양의 북쪽인 광무산(廣武山)에 진지를 쳤다. 팽월군을 추격한 항우는 광무산의 반대쪽에 진지를 쳤다. 항우와 유방이 대치하다 유방은 항우가 쏜 화살을 맞았다. 팽월군이 항우군의 후방교란을 계속하여 항우는 보급이 제대로 이루어지지 못했다. 한군 유방이 전쟁의 지지부진 함을 이유로 화친을 도모해 항우에게 천하를 둘로 나누고 군을 물리자고 제안했다. 유방은 그대로 물러나려 했지만 장량과 진평은 초군이 본거지로 돌아간 후 다시 힘을 기르면 한군이 맞서기는 어려울 것이라 생각해 유방에게 초군의 배후를 급습하도록 제안했다. 유방은 이 말에 따라 고릉까지 나아가 초군을 배후에서 급습했지만 패배하고 말았다. 이에 앞서 유방은 한신과 팽월에게 공동군을 요구하는 사자를 보냈지만 두 사람은 오지 않았다. 장량이 이는 성과에 대한 보상을 약속하지 않았기 때문이라 설명하자 유방은 한신을 초왕, 팽월을 양왕(梁王)으로 삼겠다고 약속했다. 이에 군을 이끌고 가세한 한신과 팽월과 함께 유방은 병력이 초군을 능가하게 되어 항우를 해하(垓下)로 몰아붙였다.