建武四年,刘秀命耿弇出兵进攻渔阳,耿弇因父亲耿况曾与彭宠有交情,又没有家属留在洛阳,恐怕刘秀引起疑心,于是就上书请求回还洛阳。刘叔下诏要他放心,并命他与王常一起屯兵涿郡,耿况听说此事之后,知道儿子的难处,他立即派耿弇之弟耿国从上谷出发,赶到洛阳去侍奉刘秀,耿况的这一举动,让耿弇和刘秀都安了心,刘秀对耿家的忠心感到十分高兴,河北正需要这样的忠臣来看守,于是又进封耿况为隃糜侯,接着他命耿弇与建义大将军朱祐、汉忠将军王常等进攻彭宠的望都、故安等地十余营垒,结果都顺利攻破了,燕王彭宠穷途末路,最终被杀。
建武四年,刘秀想要发兵占据张步控制下的泰山郡,于是拜陈俊为太山太守,代理大将军事,去攻占太山郡,张步听说之后,派遣其部将去攻打陈俊,双方大战于嬴下,陈俊大破其军,一直追到济南郡的边境。到了建武五年,大司马吴汉被派去攻打平原地区的富平、获索两支农民军,吴汉大破之,并收降者四万余人,刘秀遂命吴汉率军南下攻打徐州,命耿弇东进讨伐齐地的张步。耿弇遂率太山太守陈俊、骑都尉刘歆讨伐张步,张步听说刘秀将要攻打他,就封大将费邑为济南王,令他屯兵历下,又分兵防守祝阿以为犄角之势,并在钟城列营数十座以为后援。
耿弇率领汉军兵临祝阿城下之后,一日就攻下了祝阿,并故意放张步败兵逃回钟城动摇张步的军心。果然,钟城的军民听了异常震恐,全城之人皆弃城东逃,于是,耿弇又兵不血刃地拿下了钟城。费邑得报,急忙分兵于其弟费敢,令其镇守巨里,耿弇便采取了围点打援之计;汉军先围攻巨里,诱使费邑率军来救,然后半路设兵伏击,这一战汉军斩杀了费邑,费敢恐惧万分率守军连夜弃城逃走,去剧县投奔张步去了。随后,汉军又分兵围攻钟城的营寨堡垒,连破四十余营,力拔济南全郡,兵进齐郡剑指临菑。费邑被杀之后,张步马上构筑了第二道防线,他派出三弟张蓝率领嫡系部队镇守西安,各郡郡兵一万多人去守卫临菑,但结果也先后被耿弇攻破,张蓝率残部又退回了剧县。
随后张步带领他的三个弟弟张弘、张蓝、张寿和重异四将、大约十余万人马,直奔临菑而来。重异所部先与汉军接战,这位重异将军,是流民军大彤部前首领,所部极为剽悍善战,耿弇故意示弱,先将突骑精兵隐藏于小城之中,又让汉军前锋诈败,退守临菑小城,以骄张步之心;同时,耿弇又令都尉刘歆、泰山太守陈俊分兵列于城下,作为两翼防御。张步以为耿弇兵少且远道而来,可以一举而取胜,就率领他全部兵力进攻汉军,结果被汉军大将刘歆截住,双方展开了激烈的交战,打了半天,耿弇亲率突骑从小城东城门杀出,冲击张步的步兵阵列,张步大败,引兵回营。
整顿之后,两军再战,张步的主力遭到了重创,士兵杀伤无数,沟堑里都填满了尸体,在大败之下,张步又听说了刘秀率军亲来的消息,张步自忖不敌,就打算连夜撤回剧县。到了这天夜里,张步认为汉军作战了整整一天,必然已经入睡,就下令全军撤退,带着残部以及辎重乘夜撤走;走到半路上,汉军伏兵大起,张步军大乱,各自奔逃;耿弇乘机挥师掩杀,张步大败,纵马向剧县方向逃窜;汉军穷追不舍,一直追到臣昧水上,又是大杀一阵,从临菑至臣昧河边八九十里,到处都是死尸。在这场生死大战之中,耿弇率领数万汉军以少胜多,击溃了十余万张步主力,并缴获刀枪钱粮无数,仅仅是押送辎重的马车,汉军就缴获了二千余辆,张步逃回剧县,命令张蓝、张弘、张寿等人分兵守卫各地,以求喘息。
耿弇却不给他任何机会,继续挥师东进,直取张步的老巢剧县,张步的主力精锐丧失殆尽,无力再战,他不得不放弃剧县,带领残部向南逃窜。刘秀率军入城,又令耿弇率军穷追,张步狼狈逃奔平寿,张步进攻临菑之前曾写信给苏茂,让他一同合击耿弇,苏茂接信之后率领万余精兵来助张步。为了迅速消灭张步和苏茂,刘秀就派遣使者告诉张步和苏茂,谁能斩对方来投降,就封谁为侯。建武五年十月张步斩了苏茂,派使者奉苏茂的首级投降,耿弇接受了张步的投降,随后张步脱去上衣身负斧锧到汉军军门请罪,耿弇把张步送到刘秀的行辕,刘秀遵守诺言,封张步为安丘侯,张步的三个弟弟张蓝、张弘、张寿也分别到各自所在的郡县投降并自系于狱,王闳也赶到剧县向汉军投降,最后刘秀都一一赦免了他们。
刘秀平定东方后非常感慨地对耿弇说:“耿将军以前在南阳就献策要攻齐,以灭张步,但我一直认为这是非常困难不容易达成的事,没想到耿将军如今竟达到目标了,真是有志者事竟成啊!”