彭宠自称燕王已有一年。光武帝本想御驾亲征,大司徒伏湛上书阻止,光武帝打消了亲征的念头,只令建义大将军朱祐、建威大将军耿弇、征虏将军祭遵、骁骑将军刘喜等,出兵攻打北方。涿郡太守张丰响应彭宠,成为彭宠的屏障。祭遵认为不除掉张丰,就无法消灭彭宠,于是领兵先行。祭遵赶到涿郡城下,奋勇攻城,城中大乱,功曹孟厷抓住张丰,献给祭遵。祭遵立即下令将张丰斩首,然后据实上奏。光武帝听说张丰被杀,当然欣慰。只因岑彭攻打秦丰,几个月也没有传来捷报,于是将朱祐调去帮助岑彭,留祭遵屯兵良乡,刘喜屯兵阳乡,让耿弇进攻渔阳。耿弇因父亲耿况与彭宠同立战功,怕遭到猜忌,不敢单独行动,于是上书请求回洛阳,希望将渔阳的功劳让给祭遵。光武帝立即下诏:“将军曾带领宗族归顺,因公忘私,功劳卓著,现在又会有什么嫌疑呢?”耿弇接到诏令,就给父亲写信,请耿况为国效力,夹攻彭宠。
耿况看到儿子的书信后,便派耿弇的弟弟耿国入都。光武帝为嘉奖耿况的忠诚,晋封耿况为隃糜侯。彭宠兵分两路,分别攻打祭遵、刘喜:一路由彭宠领兵数万攻打祭遵;一路由弟弟彭纯领着几千匈奴骑兵,攻打刘喜。彭纯走到军都县,忽然遇到一队人马头杀来,彭纯措手不及,慌忙后退。彭纯手下的两个匈奴将领,不知利害,向前迎战,谁知上谷骑兵比胡骑还要厉害,无人敢挡。还有一位青年骁将,一马当先,挥槊杀入,刀锋所到之处,无不鲜血淋漓,两个匈奴将领都做了他槊下的无头鬼。其余的人自然逃散,彭纯也逃了回去。这位青年骁将就是耿况的次子耿舒。耿况曾派人到渔阳打探消息,得知彭纯出发后,就派次子耿舒率兵前去拦截。彭纯不曾防备,被耿舒打败。军都县本已归附彭宠,此次耿舒乘胜进攻,将它唾手得来。彭宠听说彭纯战败,军都县失守,不禁胆战心惊,连忙领兵折回,又担心祭遵、刘喜与耿况合兵攻来,因此日夜不安。渔阳城内的百姓,也担忧得很。
蹉跎了几个月,已是建武五年。子密等三人见彭宠心烦意乱,不能成就大事,就暗中密谋,计划将彭宠夫妇杀死,投降汉朝。三人等彭宠躺在床上时,进去把彭宠绑住,然后出去宣告说大王斋戒,令众人回去休息。等外吏离开,三人又假传彭宠的命令,召来彭宠的妻子。彭宠的妻子不知是何原因,见彭宠被捆住,忍不住惊叫道:“有人造反!”刚说到“反”字,已被人揪住头发。子密一巴掌向她脸上扇去,扇得她面目红肿,不敢出声。彭宠慌忙大声说:“快去为各位将军准备行装,不要多说!”子密等人才将她释放,跟她进去取金银珠宝,只留一个下人看守彭宠。
子密等取来珍宝,又将彭宠的妻子赶进卧室,逼她缝两个布袋。彭宠的妻子不敢不从,等布袋缝好,已经半夜了。子密又逼着彭宠写下一封书信,命令守城的将士开门。彭宠已像傀儡一般,写好之后,子密便将他的人头割下,转身又给彭宠的妻子一刀。他们将彭庞夫妇二人的人头装入那两个布袋中,带着彭宠的书信,直奔洛阳。
彭宠夫妇死后,尚书韩立等人立彭宠的儿子彭午为王。才过几天,国师韩利又割下彭午的头颅,献给征虏将军祭遵。祭遵进入渔阳,杀光彭宠的族人,然后派人据实上奏。光武帝封子密为不义侯。
北方平定后,只有东南一带还没有肃清。征南大将军岑彭与秦丰的部将蔡宏相持几个月,不分胜负。光武帝派朱祐前去援助,并下诏斥责岑彭。岑彭又怕又气,不等朱祐到来,便一鼓作气,打败秦丰,秦丰逃回黎邱,蔡宏被岑彭的部下杀死。彭岑逼近黎邱,秦丰的部下赵京出城投降。岑彭据实上奏,光武帝加封岑彭为舞阴侯,封赵京为成汉将军。岑彭带领赵京一同围攻黎邱,建义大将军朱祐也领兵赶到,与岑彭一起攻打秦丰。秦丰的部下田戎,自称扫地大将军,听说秦丰被围,惊惶得很,便想归顺洛阳。秦丰有好几个妻子,其中一个妻子母家姓辛,兄长叫辛臣,在田戎帐下做事。田戎让辛臣坚守夷陵,自己率兵到黎邱,打算到岑彭那里投降。不料辛臣盗取珍宝,抛弃夷陵,率兵从小路投降岑彭。田戎怕辛臣进谗,因此不敢投降汉朝,只说是前去营救秦丰。
岑彭留下朱祐围城,自己领兵攻打田戎。田戎支撑不住,连战连败,部将伍公投降岑彭,田戎逃回夷陵。光武帝亲自到黎邱慰劳将士,封赏一百多人。后来探知城中只有一千兵马,粮食也快没有了,光武帝就留下朱祐单独攻打黎邱,让岑彭与积弩将军傅俊一起讨伐田戎,自己起驾回都。
岑彭与傅俊攻打夷陵,田戎出兵迎战,伤亡无数,于是将夷陵舍去,向西逃走。岑彭追到秭归,因田戎翻山越岭,直奔蜀地,不便追赶,只好班师回去。朱祐围攻秦丰,秦丰自知危险,忙向外郡求援。秦丰的部将张康从蔡阳前来增援,与朱祐打了几十天,并将粮食输送给秦丰,城内得到粮食后,拼命坚守。朱祐分兵绕到张康营后,然后带领部下直捣张康大营,张康进退无路,被朱祐一刀砍死。
到建武五年夏天,秦丰兵尽粮绝,无计可施,只得与母亲、妻儿出城投降。光武帝因他负隅顽抗,罪无可赦,下令将秦丰正法。另派捕虏将军马武、骑都尉王霸,攻打刘纡。刘纡向海西王董宪求救,董宪正准备率兵支援,不料兰陵守将贲休举城投降,董宪怒不可遏,于是率兵围攻兰陵。虎牙大将军盖延正屯兵楚郡,听说兰陵被围,就与平狄将军庞萌一起支援兰陵。光武帝下诏:“董宪的巢穴在郯城,如果直捣郯城,兰陵自然解围。”盖延接到诏令,马上领兵出发,只因途中接连收到兰陵的警报,不得已先去兰陵。董宪只派遣偏将迎战,盖延率兵将其击退,进入城中。
过了一夜,董宪纠集大队人马围攻兰陵,盖延才知中计,于是领兵冲出,去攻打郯城。光武帝得知后,传令责备盖延:“朕让将军前去攻打郯城,无非是想趁他不备去偷袭。将军却先去解救兰陵,还没有打退敌人,又想去进攻郯城,郯城的敌人已有防备,兰陵更加危急,岂不是越弄越糟吗?”盖延此时已到郯城,不能再返回,只好全力猛攻,果然久攻不下。
不久,兰陵被董宪攻陷,贲休战死。刘纡见董宪不到,就让苏茂出去招集党羽。苏茂得了四千人,回来解救垂惠,趁机截击汉军的粮道。马武前去解救,交战的时候,城中又冲出周建。马武腹背受敌,只好冲开一条血路,逃到王霸营中求救。王霸装聋作哑,不肯出兵。马武见王霸不肯出兵解救,下令与苏茂、周建决一死战,喊杀声惊天动地。过了两三个时辰,王霸营中的壮士路润等人忍耐不住,请求发兵相助,王霸这才出兵。苏茂、周建正与马武打斗,不料后边来了一位金盔铁甲的大将军。周建急忙回马接战,不到三个回合,就受了重伤,于是掉转马头逃走。苏茂看到后,也退了回去。马武见来将打退苏茂、周建,心中十分欢喜,仔细一看,竟是王霸。
又过了两天,苏茂、周建率兵到王霸营前挑战,王霸安坐营中,与将士饮酒作乐,谈笑自如,并对将士们说:“苏茂率兵前来解救垂惠,因为粮食不够,才一再挑战。现在我们闭营休息,以逸待劳,定会大获全胜。”将士似信非信,好容易等到晚上,营外已没有动静,敌人全部退去了。半夜有人进来禀报,说苏茂、周建不能进城,逃往别处去了。
过了一夜,城中守将周诵递来降书,王霸慨然答应,与马武一起进城。刘纡本来在城中,听说周诵投降,急忙率领卫士逃往西防,投靠佼强。周建负伤逃跑,在途中死去。苏茂逃到下邳,与董宪合兵。
那时候,盖延还没有攻下郯城,屯兵城外。平狄将军庞萌起了歹意,竟率兵袭击盖延的营垒。盖延猝不及防,仓皇逃走。庞萌平时谦逊有礼,光武帝很信任他,就封他为平狄将军。现在他与盖延一同讨伐董宪,竟然反叛,光武帝非常气愤,传令众将:“我曾说庞萌是社稷之臣,不料他竟然反叛,希望你们厉兵秣马,聚集睢阳,等我亲自督战。”光武帝御驾亲征,走到蒙城,听说彭城失陷,太守孙萌被庞萌抓住,差点儿被杀。光武帝顾不上休息,留下军用物资,率领骑兵赶往任城。
庞萌自称东平王,听说皇帝御驾亲征,便去禀报董宪。董宪让刘纡进入兰陵,让苏茂、佼强援助庞萌。庞萌屯兵桃城,拦住光武帝。桃城距任城仅有六十里,庞萌以为定有一场恶战,谁知等了三天,毫无动静。他吃惊地说:“听说皇帝日夜兼程,远道而来,现在竟住在任城,不发一兵,究竟是什么意思?真是令人不解!”
正疑惑的时候,光武帝亲自率领大军前来,吴汉、王常、盖延、马武、王霸等身经百战的良将,全部到来,直抵桃城。庞萌只得硬着头皮迎敌,仿佛以卵击石,飞蛾扑火,不到半天,部下已死了一半。苏茂、佼强领兵先撤,庞萌也落荒而逃。