章邯擊破項梁的軍隊後,就認為楚地敵人的兵力已不足為憂了,便渡過黃河北上攻打趙國,大破趙軍。秦軍攻進邯鄲後,將當地民眾遷往河內(今河南黃河以北),然後火燒邯鄲城。章邯命將軍王離、涉間圍攻巨鹿,章邯駐紮在巨鹿的南麵。這個時候,趙歇為趙王,張耳為相,陳餘為將,陳餘統率士卒數萬人駐紮在巨鹿城北。被圍在巨鹿的軍隊就是所謂的“河北之軍”。秦將王離仰仗著兵多糧足,攻城凶猛。陳餘的數萬軍隊既不能解巨鹿之圍,巨鹿城中的趙軍又糧盡兵少,隻依靠自己的力量恐怕難免要城破人亡。趙國危在旦夕之中,多次請求楚、燕、齊等國援救,各國也陸續派出援兵。
楚懷王部署兵分兩路:一路是任命宋義為上將軍,項羽做次將,範增做末將,北上援救趙國,之後再反擊關中;另外一路是由劉邦統帥,向西略地,收編項梁、陳勝餘部的散兵,伺機挺進入關中,牽製章邯秦軍,減緩對趙國的攻勢。
同時楚懷王還發表了著名的政治宣言,與諸將約定“先破秦入鹹陽者王之”,“入秦無暴掠”等,這也就是後來劉邦在楚漢戰爭中踐行的“懷王之約”。楚懷王部署戰略任務時,顯然是把優先的機會留給了劉邦。至於項羽,因他處於宋義所部次將的地位,因此關中王的封賞基本與他無關。
楚懷王以宋義為上將軍,號為卿子冠軍,項羽為次將,範增為末將,英布、蒲將軍等各路將領都隸屬於宋義,北上援救趙國。救趙的楚軍大隊人馬北上到達安陽後,停留四十六天而不前行,每日飲酒作樂。陳餘援軍以及齊燕等國的援趙軍隊都已先後趕到了巨鹿,卻懾於王離的威名和章邯的後援,沒有一個敢先出頭的,想等楚國援軍到來,一起行動。宋義卻很淡定,計劃著先讓趙軍與秦軍消耗著,等時機成熟再出兵。
項羽本來就對楚懷王奪權不滿,又急於與秦軍交戰,為叔父項梁報仇,對章邯的囂張氣焰極為蔑視。他見宋義在安陽按兵不動,拒不救趙,便假借懷王的命令在軍帳中一劍斬下了宋義的人頭,然後號令軍中將士歸順項羽。楚國本來就是項家扶持起來的,加上北上的部隊中多是項梁從江東帶出來的八千精兵子弟,英布、蒲將軍也站在項羽一邊,眾將領見上將軍宋義已被斬首,無不畏懼而服從,於是眾將領擁立項羽為代理上將軍,並派桓楚回彭城向楚懷王匯報。懷王低估了項羽的能力,隻好正式任命項羽為上將軍,北伐軍對交由他統帥。
項羽在關鍵時刻殺了上將軍宋義,名震楚國,楚軍士氣大為振作。項羽立即派英布、蒲將軍率兩萬士卒為先遣部隊,渡過黃河,援救巨鹿。取得了一些局部勝利,隨後項羽下令楚軍全部渡過黃河。渡河後項羽下令將全部船隻鑿沉,煮飯的鍋釜全部砸毀,焚燒營壘,每人隻攜帶三天的口糧,以此向將士們表示同秦軍決一死戰、有進無退的決心。這就是典故“破釜沉舟”的由來。楚軍將士人人鬥誌昂揚,項羽大軍急速前進到達巨鹿,包圍了秦將王離的部隊。與秦軍激戰九役大破秦軍,斷絕了秦軍送糧的甬道,斬殺秦將蘇角,活捉將軍王離。秦將涉間拒不降楚,自焚而死。巨鹿之戰以秦軍潰敗、楚軍大獲全勝而宣告結束。
項羽巨鹿之戰創下以少勝多的光輝戰例,此時才年僅二十六歲。巨鹿之戰秦軍被擊潰後,項羽召見各路諸侯的將領。他們進入項羽軍營的轅門後,“無不膝行而前”,不敢抬頭仰視。項羽被推舉為各路起義軍的上將軍,各路諸侯的軍隊都歸屬項羽統一指揮。巨鹿之戰後秦軍被項羽擊敗,章邯退至巨鹿南麵的棘原駐守,項羽駐紮在漳水南岸,秦楚兩軍相持多次交戰,但是沒有再一次發動決戰。
秦帝國宮廷內部也是爭權奪勢,相互傾軋。丞相李斯已死,趙高攫取了帝國大權,昏庸的秦二世成了趙高手中的傀儡。秦軍巨鹿之戰失利,秦二世派人責問章邯。章邯派長史司馬欣回鹹陽向秦二世匯報軍情,司馬欣到達鹹陽後,被趙高擋在皇宮外門,三天不得入見。司馬欣見勢不妙,趕緊奔回巨鹿向章邯報告說:“朝中現在是趙高一人說了算,仗打勝了,趙高必定嫉妒你的功勞;如若敗了,恐怕難免一死。”章邯猶豫不決,便秘密派使者候始成到項羽營中談判,以求與項羽訂立和約。項羽要求章邯無條件投降,章邯自然是沒有答應,和約沒有訂成。項羽派蒲將軍軍晝夜領兵從三戶津(河北臨漳縣漳河上的一個渡口)渡漳河,駐紮在漳河南麵。與秦軍交戰,又一次打敗了秦軍。
秦軍接連潰敗,章邯正式派使者求見項羽。大概是範增給項羽出的主意,讓項羽改變了主意。考慮到久戰糧草不濟,還要抓緊時間入關中,答應了與章邯訂立和約。項、章約在洹水南岸的殷墟(今河南安陽小屯)相見。章邯滿麵流涕,向項羽訴說了趙高的種種行為。項、章訂立盟約,項羽立章邯為雍王,安置在楚軍營中;司馬欣為上將軍,帶領投降的秦軍為先鋒部隊,向西挺進鹹陽。章邯陣前倒戈項羽,項羽統率著各路諸侯軍隊一路浩浩****,向秦王朝的所在地關中進發的速度大大加快了。