公元前323年春三月(楚懷王六年),楚懷王一面命昭睢率十萬楚軍鎮守許昌,一面命唐蔑率十萬楚軍在方城、葉城、南陽一帶設防,一面命景翠率十萬楚軍在襄樊、荊門一帶設防,一面與昭陽率二十萬精兵(馬軍六萬、步軍十四萬)北上伐魏,攻打魏國的襄陵(現在的河南省睢縣),以達到打通到齊國的通路,幷包圍宋國的戰略目的。
三月十五日,楚懷王與昭陽率二十萬楚軍(馬軍六萬、步軍十四萬)出許昌、取鄢陵(現河南鄢陵縣)、到達太康(現河南太康縣),守城的一萬魏軍不肯投降,急向大梁(現河南開封市)和睢縣的魏軍求救。楚懷王即命昭陽率十萬楚軍扎於清集、揚廟(現太康縣北部)以拒大梁、睢縣的魏軍援兵,隨後下令攻城。大梁、睢縣的魏軍見楚軍勢大,不敢派兵往太康救援,二天後太康城破,楚軍盡斬守城的一萬魏軍。
三月二十日,楚懷王與昭陽各率十萬楚軍(馬軍三萬、步軍七萬)進擊襄陵(現河南睢縣)、寧陵(現河南寧陵縣)。魏惠王聞訊,一面割讓民權(現河南民權縣)、曹縣(現山東南部曹縣)於齊國,請求齊威王派兵救援,一面令大梁十萬魏軍開拔、奔救襄陵。齊威王接到魏王求救書,隨召集文武大臣議事說:“楚懷王親率二十萬精兵伐魏,現已到襄陵。魏惠王割民權、曹縣兩縣於寡人,求寡人出兵解救襄陵之困,衆卿家以爲如何”?有臣奏說:“楚懷王自繼位以來,西擊蜀、定巫巴、敗秦師、定漢中、討韓伐魏、立定伊川,戰績顯揚,其勢正盛,不可以在這個時候和他對決”。又有臣奏說:“臣以爲,楚懷王西征北討,年年征戰,楚師早已疲倦。今大王舉十萬大軍南下,合大梁十萬魏軍則爲二十萬了,就算不能取勝,楚軍也就取不到襄陵了。況且襄陵戰略位置非常重要,楚軍攻取襄陵,明在伐魏,實是打通攻齊的要道和合圍宋國,大王可約宋出兵寧陵,形成對楚軍的三面夾擊”。齊王說:“善!”隨親率大軍十五萬(馬軍三萬、步軍十二萬)出淄博、過濟南、南下援魏。
楚懷王聞訊,隨即召集三軍將領說:“齊軍十五萬,需十五日才能到達襄陵,而大梁魏軍三日便可到達,齊軍未到,宋軍不敢到寧陵援魏。因此,必須在七日內攻下襄陵、寧陵,然後揮師北上,擊敗齊軍。三軍將領聽令:令昭陽率八萬(馬、步軍各四萬)大軍火速攻佔杞縣(現河南杞縣),攔截大梁來援的魏軍,又令一大將率三萬楚軍(馬軍一萬、步軍二萬)扎於襄陵、寧陵之間的陽驛(鄉,寧陵縣西十里處),攔截寧陵二萬魏軍來援襄陵,其餘九萬大軍務必於五日內攻下襄陵,不得有誤。”於是,楚軍立即向襄陵、杞縣發起總攻擊。
杞縣離襄陵四十里,離大梁六十里,有一萬魏軍把守。襄陵(睢縣)有三萬魏軍把守,寧陵(縣)有二萬魏軍把守。昭陽率四萬楚軍騎兵一個小時就到達杞縣,連續不斷地向杞縣發起猛烈的攻擊,楚軍的步軍是在三小時後全部到達杞縣的,這時杞縣已被昭陽連續攻打了二個小時了,楚軍的四萬步軍一到,一個小時後杞縣城門就被撞開,守城的一萬魏軍全部被斬殺。其實,大梁魏軍的二萬先頭騎兵在昭陽騎兵到達杞縣的一個小時後也就趕到,但被昭陽用三萬騎兵擊敗潰散,不敢靠近杞縣。等到大梁魏軍的八萬步軍趕到,昭陽已攻下杞縣二個小時了。這時,昭陽的四萬騎兵,四萬步兵早已嚴陣以待。
大梁魏軍救兵十萬(馬軍二萬五千、步軍七萬五千)急急趕到杞縣,於西十里鋪、惠濟河(現杞縣西北十里處)一帶與昭陽八萬楚軍相遇,魏軍總數雖然多了二萬,但卻少了一萬五千騎兵,這正是楚懷王克敵制勝的妙法。因爲攻打襄陵城,馬軍多則用不上,在野外平地衝殺,馬軍與步軍相比,以一當三,故將六萬馬軍撥四萬給昭陽,抽出二萬步軍,以絕對優勢在最短時間內拔掉襄陵城。魏軍二萬騎兵剛剛被昭陽的楚軍騎兵擊逃,個個心有餘悸。