楚國在楚魏邊境陣兵七萬,分別鎮守在召陵、淮陽、鹿邑。三晉因與齊交戰,所餘兵馬不多,又各向本國請兵三萬,攜十五萬之眾三頭並進向三城發起了猛烈的進攻。楚國邊界上的三座城市被襲,急調蔡陽、平輿之兵救召陵,調項城兵馬救淮陽,又調城父以及鹿邑附近各城的兵馬救鹿邑。
韓國離召陵最近,所以韓人進攻的是召陵。五萬韓兵由郾城出發,走了一個多時辰就到達了召陵。此時召陵尚不知韓人已經攻來,城門依舊大開著,城裏的百姓仍舊進出如常。隻等到韓國大軍來到召陵城外十裏的地方,楚人才驚覺過來。楚人匆匆把城門關閉,調集兵馬準備守城,一時間城內一片慌亂。然而楚國的士兵未及登上城牆,那邊韓人的軍隊已經來到了召陵城下。
韓人到達了召陵之後立即開始攻城。巨大的攻城車很快就敲開了召陵的城門。召陵的城門被敲開之後剛剛組織好的楚兵在將軍的帶領之下迅速的衝出了出來。還好城門之下除了那輛攻城車之外並沒有多少人,雖然楚人衝得勇猛卻也沒讓韓人受多大的損失。起初韓人懼怕楚人自城牆上射下來的箭雨,不敢離的太近,現在楚人衝了出來,韓人也一湧而上與楚人展開了激烈的肉搏戰。韓楚之兵混在了一起,楚人的弓箭手便不敢再和發箭。楚人失去了城牆上的優勢,韓人的進攻就正式的開始了。
韓人兵多,楚人不敵,在門外沒衝多久就被楚人包圍,而且另外一支韓兵也趁機衝進城去,與城內的韓人展開了巷戰。很快的城內就變成了人間地獄,到處是仆倒在地的死人,到處是漂流的鮮血。召陵兵力不多,隻有兩萬,而且事發突然,很快就失守了。召陵守將靳夜一看不敵,帶著三千殘兵由東門而出,向著蔡陽、平輿方向逃了過去。
蔡陽守將得到召陵被襲的消息,趕緊點兵去營救。行至半路,正好遇到靳夜帶著殘兵向這邊退了回來。沒過多久,平輿方向的援兵也到了,三方軍馬合在一處,總共得兵兩萬七千人。三方軍隊之中以靳夜的官職最高,於是兩方軍馬便將軍隊指揮權交給靳夜統一指揮向召陵殺了回去。
戰爭不是兩個小孩打架,楚人當然不會傻到反過來再去攻城。韓人既然對楚用兵,不可能隻攻下這麼一座城池就算了。所以靳夜料定韓人必然會再次攻擊楚國的其他城市。所以靳夜把兩萬七千人分成五部分,他自帶一部七千人,其他四部各五千人埋伏在召陵左右。靳夜埋伏了兩天,第三天夜裏,韓人終於從召陵出來,帶兵三萬向偷偷向蔡陽摸了過去。等到韓人離城三十裏的時候,靳夜令一支五千人的軍隊從後插入,攔住了韓人回去的道路,然後其他的三支隊伍一起殺出把韓人包圍了起來。
韓人被圍,立即向召陵城中救援。召陵城中韓軍盡出,前去支援。然而韓人剛剛從召陵城中出來,靳夜就親自帶著七千楚人攔住了韓人進城的道路,然後與前麵那支五千人的軍隊轉而向後回擊韓人出城支援的軍隊。韓人的兩隻軍隊同時受到襲擊,首尾不能相顧,終於敗下陣來。韓人見大勢已去,奮力拚殺衝出包圍,五萬兵馬隻剩一萬三千人,韓將不敢在楚境多留,轉而向北退出了楚國的邊界。
韓人退出楚境,楚人也不追趕,收複召陵之後,駐了進去。楚人入城之後一邊嚴查奸細,一邊加固城牆以防韓人再次進攻。敵軍雖退,而戰爭的陰影卻並未曾消除。
趙人進攻的是淮陽。淮陽近潁水,趙人沿潁水而下,約楚人與潁水之濱決戰。楚人依約而來,兵不足三萬但是有戰車三百輛,騎兵五千人。趙人有五萬兵力,其中戰車兩百輛,騎兵一萬人。兩軍於潁水之濱列開陣式。戰鼓雷動之際,雙方軍隊相對發起衝鋒。楚國用的是鍥形陣,以戰車打頭,騎兵隨後,然後是步兵,大軍依次向趙人衝了過去。
趙人排得是燕形陣。韓軍衝來之際,趙人把正中間的軍隊散向兩翼,避開楚人的正麵衝鋒。趙人的兩翼各有一百戰車,騎兵卻都集中在左側。見到韓軍發起衝鋒。趙人騎兵不動,先讓兩百戰車避過敵人最前麵的楚國戰車,直接衝擊敵人的騎兵隊伍。等到敵人的騎兵隊伍出現混亂之後,八千騎兵立即向楚軍發起衝鋒。八千鐵騎一過,楚人的陣形全亂,再也沒什麼戰鬥力了。趙人看準機會,把所有的步兵都壓了上去。楚軍大亂,戰一天一夜全軍覆沒。此一仗趙國損兵一萬六千,殲敵三萬,占領了淮陽。為秦國奪取了楚國的第一個城池。