公元前205年4月,刘邦在彭城惨败,西逃至荥阳(今河南荥阳县)。诸侯纷纷背汉降楚,处境艰难的刘邦制定了以下战略:自己在荥阳正面坚守,分兵向侧翼发展、敌后骚扰。命令大将韩信率军开辟北方战场,逐次消灭黄河以北的割据势力,向楚军侧背发展,形成对楚军的迂回包围态势。当时,黄河北岸尚有魏(今山西南部)、代(今山西北部)、赵(今河北南部)、燕(今河北北部)四大割据势力,他们都投靠项羽,成为楚的羽翼。汉要灭楚,就必须剪灭这些诸侯国,使项羽陷于孤立。
彭城大败后,魏王豹向刘邦请假,说要回家看望生病的父母。谁知他心怀异志,渡过黄河后,就断绝桥梁、封锁渡口,宣布脱离汉军,拥护项羽。刘邦派郦食其前往劝说,让他回心转意,但魏王豹不听,说:“人生世间,如白驹过隙。汉王轻慢侮辱人,骂诸侯、群臣如同谩骂奴仆,没有上下礼节,我不愿再看到他。”刘邦派韩信、灌婴、曹参击魏,魏王豹屯兵蒲板(今山西永济县西),防备韩信从临晋(今陕西大荔县东)渡过黄河。韩信派出小股疑兵,假装从临晋渡河,而主力则沿黄河北上,从夏阳(今陕西韩城南)渡河,直袭安邑(今山西夏县西)。魏王豹大惊,没想到汉军已经绕到了自己身后,他慌忙从蒲板撤军,向后转,迎击韩信。公元前205年9月,韩信活捉魏王豹,把他押送到荥阳刘邦军中。然后,全部平定魏地,分设为河东郡、上党郡、太原郡。
韩信已经平定魏地,向刘邦请兵3万,愿意北击燕、赵,东击齐,南绝楚军粮道。刘邦批准了这一计划,派张耳增援韩信,北击赵、代。9个月后,韩信大破代兵,在阏与(今山西和顺县)活捉代国相国夏说。韩信接连下魏破代,刘邦对他不放心,使人收其部分精兵,到荥阳抵御楚军。
刘邦大败于彭城,再加上他并没有杀死张耳,陈馀遂背叛汉王。公元前204年十月,韩信、张耳率军数万东击赵地。赵王歇和陈馀聚兵井陉口(今河北井陉县附近,太行山上的重要关口,是由山西到河北的要道),号称20万,迎击汉军。李左车劝说陈馀:“韩信、张耳乘胜而进,离国远斗,其锋不可挡。现在井陉之道,两辆车不能同时通过,两匹马不能同时并行。汉军前行,粮食必然在后。希望您派给我3万人,从小路断绝汉军车辆辎重,您深沟高垒、不与他战斗。汉军向前不得战斗,向后不得退还,田野中并没有可以掠夺的粮食,不出十天,韩信、张耳的人头可致于您的麾下,否则,必然被他们所擒。”陈馀不听。韩信得知陈馀不用李左车之计,大喜,遂敢引兵进攻井陉口。
离井陉口还有三十里,汉军停止前进、安营扎寨。半夜时分,韩信做出部署:
第一,选轻骑二千人,每人拿一面红旗,从偏僻小道迂回到赵军侧翼的萆山,然后潜伏下来。等赵军全部出动追逐我军时,二千人快速占领赵军的老巢,拔掉他们的旗帜,遍立我军红旗,以断敌归路。
第二,派1万人为前锋,趁夜深人静,到绵蔓水东岸背靠河水布列阵势。以迷惑调动赵军,增长其轻敌情绪。赵军望见都大笑,以为汉军被置于“死地”,已无路可退。认为韩信根本不懂用兵常识。
天亮后,韩信亲率汉军,打着大将旗帜、仪仗、鼓号,向井陉口的赵军进逼过去。赵军果然全力迎击,厮杀良久之后,韩信、张耳假装大败,丢弃战鼓旗帜,迅速后撤,与埋伏在河边的汉军会合。赵王歇和陈馀以为汉军真的败了,命赵军紧追猛攻汉军,企图在河边全歼汉军。汉军士兵看到前有强敌、后有大河,无路可退,所以人人死战,个个拼命,赵军的疯狂攻势被遏制住了。这时,埋伏在侧翼的汉军二千轻骑兵,趁机占领赵军大营,他们拔掉赵军旗帜,插上汉军红旗。一时间,红旗林立,迎风招展,好不威风。赵军自觉无法取胜,想返回大营,但看到满山红旗,大惊,以为汉军已经活捉赵王和诸将,赵军遂大乱,四处逃散,赵将虽然斩杀多人,但无法控制混乱逃跑的局面。于是,汉军前后夹击,大破赵军,斩陈馀,擒赵王歇,遂平赵地。
战后,诸将不解,感觉韩信背水一战,与兵法不合,纷纷询问。韩信说:“陷之死地而后生,置之亡地而后存。这些士兵归我指挥时间不久,我对他们并没有多少恩惠,这简直是驱赶市民富人去战斗,这种情况必须把他们置之死地,才能奋勇杀敌,如果有一丝活路,他们也会无心战斗、四处逃跑,这样就无法使用他们了。”诸将都叹服不已,说:“太妙了,我们实在想不到。”