耿弇于是下令军中不许掳掠,等张步来了再夺取财物,以此激怒张步。张步听说后,大笑道:“尤来、大彤的十多万军队,我都能直接冲进他们的营地将其打败;如今耿弇的兵力比他们少,又都疲惫不堪,有什么好怕的!”于是他和三个弟弟张蓝、张弘、张寿以及原大彤军的首领重异等人率领号称二十万的大军,来到临菑大城东边,准备攻打耿弇。耿弇上书说:“我占据临菑,深挖壕沟,高筑壁垒;张步从剧县来攻打,必定疲惫饥渴。他要是进攻,我就引诱并攻击他;他要是撤退,我就追击。我凭借营垒作战,兵力精锐,以逸待劳,以实击虚,不出十天,就能斩获张步的首级。”于是耿弇先出兵到淄水(《水经》记载:淄水发源于泰山莱芜县原山的东北,流经临菑县东 )边,与重异的军队相遇;突骑想要出击,耿弇担心这样会挫败敌军的锐气,使张步不敢前进,于是故意示弱,助长敌军的气焰,率军退回小城,在城内列兵,派都尉刘歆、泰山太守陈俊分别在城下列阵。张步气势正盛,直接攻打耿弇的营地,与刘歆等人交战。耿弇登上齐王宫的坏台观察(贤良注解说:临菑原本是齐国的都城,齐王宫中就有坏台 ),看到刘歆等人与敌军交锋正激烈,就亲自率领精兵从东城下横向冲击张步的阵营,大败敌军。飞箭射中了耿弇的大腿,他用佩刀截断箭杆,身边的人都没有察觉。到了傍晚,收兵回营;第二天清晨,耿弇又率兵出战。
这时刘秀正在鲁(今山东曲阜 ),听说耿弇被张步攻打,亲自前往救援。还没赶到时,陈俊对耿弇说:“剧县的贼军兵力强大,我们可以暂且关闭营门,让士兵休息,等皇上到来。”耿弇说:“皇上马上就到,作为臣子,应该杀牛、滤酒来款待百官(陆德明说:用筐过滤 。贤良注解说:过滤 ),怎么能把贼寇留给皇上呢!”于是出兵与敌军大战。从清晨到黄昏,又一次大败敌军;敌军死伤无数,壕沟里都填满了尸体。耿弇知道张步陷入困境即将撤退,预先在左右两翼设下埋伏等待他;(两旁伏兵就像鸟展开翅膀一样 )到了人定时分(黄昏之后,就叫人定时分 ),张步果然率军撤退,伏兵趁机出击,一直追到巨蔑水(今山东寿光西 ,贤良注解说:巨蔑水,又叫巨洋水,在今青州寿光县西 。《水经注》记载:巨洋水发源于朱虚县东泰山,袁宏称它为巨蔑水,王韶之则称它为巨蔑水;向北流经临朐县东,又向北流经临朐县西,再向东北流经寿光县西 。),追了八九十里,路上到处都是尸体,相互连接,还缴获了两千多辆辎重车(《风俗通》说:一辆车称为一乘,也叫一两 。因为车厢、车辕和车轮两两相对,所以称为两 )。张步回到剧县,他的兄弟们各自带兵散去。
几天后,刘秀到达临菑,亲自慰劳军队,群臣聚集。刘秀对耿弇说:“从前韩信在历下打败敌军,开创了汉朝的基业(相关事迹见十卷高祖四年 ),如今将军你在祝阿(今山东济南长清区 )取胜,开始建功立业,这里都是齐地的西部边界,你们的功劳相当。不过韩信是袭击已经投降的敌军,而将军你独自战胜强劲的对手,你的功劳比韩信更难能可贵。而且,田横烹杀了郦食其,等到田横投降时,高帝下诏给卫尉,不许他报仇;张步之前也杀了伏隆(相关事迹见上三年的记载 ),如果张步前来归降,我会下诏让大司徒消除怨恨,这两件事又特别相似。将军你之前在南阳(今河南南阳 )时,就制定了平定齐地的宏伟计划(指建武三年冬天耿弇跟随刘秀到舂陵,主动请求平定齐地 ),我当时还觉得这个计划不切实际,难以实现(贤良注解说:“落落”,就是不切实际的意思 ),如今看来,有志者事竟成啊!”刘秀接着前往剧县。
耿弇继续追击张步,张步逃到平寿(今山东潍坊西南 ,贤良注解说:平寿,是县名,属北海郡;旧城在今青州北海县 ),苏茂率领一万多人前来救援。苏茂责备张步说:“南阳的军队精锐,延岑善于作战,却被耿弇打得逃跑了(相关事迹见上三年的记载 ),大王你为什么要主动去攻打他的营地?既然召我来救援,为什么不等我!”张步说:“我太惭愧了,没什么可说的。”(贤良注解说:“负”,是惭愧的意思。说两次“负”,表示非常惭愧 )刘秀派使者告诉张步、苏茂,谁能斩杀对方并投降,就封谁为列侯。于是张步斩杀苏茂,到耿弇的军营前袒露上身投降;耿弇把他送到刘秀的驻地,然后率兵进入平寿城,在城中树立起十二个郡的旗帜和战鼓,让张步的士兵分别按照所属郡县到旗下集合,投降的士兵还有十多万,缴获的辎重有七千多辆,耿弇把这些士兵都遣散回乡。张步的三个弟弟各自被关押在当地的监狱里,刘秀下诏将他们全部赦免,封张步为安丘侯(《地理志》记载,安丘是侯国,属琅