汉建武五年(公元2 9 年),光武帝刘秀命令建威大将军耿弇前去讨伐张步。耿弇先在外围扫荡,平定了济南郡,然后逐渐威胁张步中心。当时,张步以剧县作为都城。派他的弟弟张蓝率领精兵二万人在西安县驻守, 各郡太守集合一万多人守卫临菑, 两地相距四十里。
耿弇率领军队进军画中,画中位于西安和临菑之间。耿弇看到西安城虽然很小,却很坚固,张蓝的守军也很精锐;临弇虽然名为大城,但实际上却很容易攻取。于是传令各将校,五天以后会合, 攻打西安。张蓝听说后,日夜警戒。
到了预定的日期,半夜时分,耿弇命令各将领让部队在睡觉的地方吃饭。到了天亮,军队开到临菑城。只用了半天时间,就将它攻下,军队进去占据了该城。耿弇下令,不许军队抢掠,要等张步来了以后才掠夺财物,以激怒张步。西安的张蓝听说后,非常害怕,就率领军队逃回剧县。
张步听说临菑被攻下,联合三个弟弟张蓝、张弘、张寿以及前大彤军首领重异等人的军队,号称二十万,抵达临菑城东,准备进攻耿弇。耿弇向刘秀报告,说:“我占据临菑,深挖战壕,高筑城墙。张步从剧县进攻,军队疲惫不堪。他要进军,我就引诱他进攻;他要撤退,我就追击。我依靠自己的营垒作战,比敌军精锐百倍,以逸待劳,以实攻虚,十天之内,就能斩获张步的脑袋。”
耿弇率领军队出营,到淄水边,遇上重异的军队。骑兵突击队想要进攻,耿弇害怕挫了敌军的锐气,让张步不敢再前进,就率军回到临菑城,在城内驻扎,派都尉刘歆、泰山太守陈俊分别在城下布阵。耿弇是故意表现自己的软弱,来助长对方的气焰。张步气盛,直接进攻耿弇的军营,与刘歆等人交战。耿弇登上原齐国宫殿残剩的高台,观察刘歆等人同张步交战的情况,时机一到,就亲自率领精锐部队,在东城下从侧面攻击张步,大败敌军。交战中有流箭射中耿弇的大腿,耿弇用佩刀砍断箭杆,身边都没有人知道,天色渐黑时收兵。第二天早晨,耿弇又率军出营交战。从早晨一直战到黄昏,再次大败敌军,杀伤敌人无数,尸体填满了水沟。耿弇料到张步失利后会撤退,预先在左右两翼设下了埋伏。深夜,张步果然率领军队撤退,埋伏的士兵发起进攻,一直追到巨昧河边,前后八九十里的路上留了一地的死尸。耿弇缴获张步的辎重几千车。张步逃回剧县,兄弟各自带兵撤回。
过了几天,刘秀抵达临菑,亲自犒劳军队,大会群臣。刘秀进入剧县,耿弇则继续追击张步。张步逃奔平寿县,苏茂率领一万多人前来援救。苏茂责备张步说:“凭南阳军的精锐,加上延岑那么善战,却被耿弇打败。大王为什么要前去进攻耿弇的阵地呢?您既然征召我来,就不能等等吗?”张步说:“实在是惭愧,没有什么可说的。”
刘秀派使者告诉张步、苏茂,能诛杀对方并投降的,封侯。于是张步杀死苏茂,到耿弇的军营门口,脱去上衣,袒露臂膀,向他投降。刘秀封他为安丘侯。