公元27年,劉秀逐漸在西漢末混戰中脫穎而出,成為全國最大的割據軍閥。遂有誌掃平海內,一統天下。而當時橫在他麵前的還有數十個割據政權,其中較大的有西南的公孫述占據全蜀,兵精糧足;西麵的隗囂,占據隴上,擁兵十餘萬;北麵的彭寵,占據燕北,與匈奴聯絡,其勢不小;東麵的劉永,占據魯南,淮上,擁兵數十萬;還有占據著魯中的張步、占據東海的董憲,他們都與劉永聯手,接受其封號,距離劉秀最近,也威脅最大。
張步當時占據富庶的膠東及魯中十三郡,擁兵十餘萬,而耿弁軍方三萬餘人,眾寡之勢已分。但寡軍的偏要取攻勢,而眾者卻步步設防,形成了局部以多擊少的勢態。
公元29年秋,耿弁率軍東進,渡過黃河,抵達洛水西岸。張步得知耿軍來攻,采取了禦敵於國門之外的防禦戰略,派大將軍費邑沿曆下(今山東濟南)至仄山一線布防,結營十餘座,費邑率主力鎮守曆下以為策應。
耿弁偵知敵人的布防部署,決定先從敵人防線的最薄弱處下手,撕開一處,動搖全線。決心已定,他揮軍渡過濟水,以迅雷不及掩耳之勢包圍了視阿(今山東濟南西),旋即發起猛攻。耿軍士兵乘新到之銳氣,前赴後繼,蜂擁爬城,早晨開始進攻,至午時就攻破城池。耿弁機智地令圍兵網開一麵,好讓視阿的潰兵逃向鍾城(今仄山北)。張步手下的兵也真的不濟事,鍾城守軍看到視阿兵那驚恐萬狀的狼狽相,不由得心生惶惑,未及耿弁兵到,先棄城逃跑,耿弁一日之內,連下兩城。
張步大將費邑一開仗就丟了兩城,未免有些驚慌,唯恐曆下城有失,遂派其弟費敢率兵一部扼守巨裏(今山東曆城東北),以保障曆下側翼安全。
本來,曆下城城高池深,糧食充足,如果費邑不分兵,那耿弁還真不好攻。費邑愚蠢地分兵巨裏,給了耿軍可乘之機。耿弁決定以圍點打援戰術,將費邑誘出城來,於野戰中殲滅。
部署已定,耿弁兵臨巨裏城下,派兵砍伐樹木,大造攻城器具,把聲勢搞得大大的,揚言三日後將大舉攻城。同時又故意讓一些俘虜逃走,讓他們跑到曆下向費邑報告耿軍將要進攻巨裏的消息。
費邑聞訊,正在躊躇,其弟費敢又派人前來求救。費邑手足情深,遂率精兵出城,晝夜兼程,來援巨裏。
耿弁見敵人已中計,心中大喜,馬上以三千人繼續圍攻巨裏,再將其餘人馬埋伏於自曆下往巨裏的半途的兩側山岡之上。設下口袋,專等敵人上鉤。
費邑不知就裏,率大軍急匆匆地趕路,不知不覺鑽進了耿軍的埋伏圈。隻聽一聲炮響,山岡上殺下無數耿軍,將費邑軍截成數段。費邑軍倉促遇伏,被驚得目瞪口呆,很多人未及抵抗就身首異處。不大工夫,費邑連他本人的三萬精兵就煙消雲散了。
耿弁命人將費邑的首級挑在竹竿上令巨裏守軍觀看,費敢嚇得魂飛魄散,星夜棄城逃走。這樣一來,張步的防線悉數瓦解,費邑軍七八萬大都被殲,張步的首府劇縣暴露於耿軍兵鋒之前。
第一道防線被攻破,仍沒能使張步清醒過來,他仍然采用被動防禦的戰略,連忙又布下第二道防線,急令其弟張藍率領精兵二萬守西安(今山東臨淄西北)。另外湊集諸郡兵馬一萬守臨淄,兩城相距四十餘裏,互為犄角之勢,作為劇縣的最後一道屏障。
先攻西安還是先攻臨淄,成為擺在耿弁麵前的一道難題。西安城雖小,但兵多城堅,臨淄城雖大,但兵力薄弱,守軍係統紊亂,各不相能。當時的情勢是這樣的,如果先攻臨淄,那麽西安必然出兵援救,造成圍攻部隊內外夾擊的威脅。如果先攻西安,雖說臨淄未必來援,但卻一時半會兒難以攻下,頓兵堅城之下,死傷必多,即使能攻下來,張藍引兵逃入臨淄,合兵一處,再攻臨淄勢必困難百倍。當時耿弁孤軍遠征,隻宜速戰,而不宜拖久,否則日久兵疲、後續不繼、運輸困難,後果不堪設想。
麵對這重重困難,耿弁想出了一個聲東擊西,擊弱避強的巧計。召開將領會議聲稱日後進攻西安,然後故意把這個消息泄露出去,好讓西安守軍知道。卻於當夜率軍潛行至臨淄城下,以迅雷不及掩耳之勢發起突然進攻。臨淄城大兵少,本來就覺兵力不足,因為防守疏忽,聞說耿軍欲攻西安,更是不以為備,一下子就讓耿軍突入城內,守軍頃刻瓦解。耿軍占領臨淄,斷絕了西安與劇縣的聯係,使其孤懸於外,張步之弟張藍心存恐懼,遂棄城逃往劇縣,這樣,連西安也送給耿軍了。
第二道防線又被打破,張步實在沒有辦法了,行黔驢之計,傾巢出動,湊集二十萬大軍反攻臨淄,以圖趁耿軍兵少力疲之際一戰破之。說實話,如果張步早一點集中優勢兵力與耿弁決戰,那麽雙方勝負就未可知了。可惜,張步隻知被動防禦,眼看著一點點地被耿弁吃掉外圍,待精兵損失過半,重鎮臨淄也落入敵手之後再來反攻,一來精兵已損,臨時湊起的大軍半為烏合之眾,戰鬥力不強;二來耿弁可以據堅城臨淄,深塹高壘,以逸待勞,反客為主,進可攻,退可守。地利之便本來是張步的,現在反為耿弁占去。
果然,精明的耿弁就是采用依托臨淄,以逸待勞的作戰方針。為此,他上書劉秀,評述這一方針的始末:“臣依托臨淄,深塹高壘,張步從劇縣來攻,疲勞饑渴。想要進攻,我就誘他進來打擊之;想要退,我就追著屁股打他。臣依托營驛與堅城,累了就休息,保持銳氣,以逸待勞,以實擊虛,十五天之內,張步的腦袋就要搬家了。”
在此後的戰鬥中,形勢果然如耿弁設計的那樣,張步的二十萬大軍步步挨打,最後被耿弁吃掉。
剛開始,耿弁為了誘敵上鉤,主動派兵占據淄水上遊,拉開一個狙擊敵人的架勢。不久,碰上了張步的前鋒,稍一接觸,耿弁馬上下令撤兵,故意示弱以驕敵。張步軍不知是計,引大兵至,耿弁將精兵隱蔽於城內,另派都尉劉歆、泰山太守陳俊分別列兵於城外。張步見城外耿軍軍勢較弱,遂揮軍進攻。正打得不可開交,耿弁乘機率城內主力,突然從翼側突入敵陣,雙方一場大戰。在激戰中,一支敵箭射中耿弁大腿,他毫不以為意,回身拔出箭來,繼續指揮作戰,終於重創敵軍,張步留下片片屍體退了回去。
第二天,張步不甘失敗,整軍再戰,又被殺敗。劉秀聞聽張步率大軍反攻,唯恐耿弁兵少有失,遂親自率軍來援。耿弁部將陳俊聽到消息,勸耿弁暫且休息,待劉秀援兵到了再打。耿弁卻說:“皇上駕到,我們應當殺牛備酒迎駕,怎麽能把大批敵軍留給皇上呢!”遂不顧陳俊的勸阻,再次出城大戰。雙方廝殺了一整天,盡管張步兵多,但多係烏合之眾,當不得大戰陣,最後終於敗了下來,張步軍的屍體填滿了臨淄郊外的溝塹。經此一戰,張步再也無力反攻了。
耿弁料到張步數敗之後必然撤兵,事先就在張步營壘兩側埋上伏兵,侍張步拔營一撤,伏兵驟起,殺得張步措手不及,士卒自相踐踏,死傷累藉。張步率少數殘兵,倉皇逃回劇縣。待到數日後劉秀援軍到達,張步已成釜底遊魚,隻待最後會餐了,援軍竟無所用之。劉秀高興地將耿弁與韓信相比,誇他的成功比韓信還要難。不久,耿弁圍劇縣,迫得張步最後拱手而降。