更始元年( 公元2 3 年) 三月,王凤和太常偏将军刘秀等率领大军攻打昆阳、定陵、郾等城,都攻克了。王莽派司空王邑、司徒王寻一起发兵去平定崤山以东地区。各州郡共征召起兵士四十三万人,号称百万,其余的还正在会集。
汉军的将领们看到王寻、王邑兵多势众,都跑回昆阳城,惊慌不安,担忧老婆孩子,想从这里撤到其他城邑去。刘秀对他们说:“现在城内兵、粮既少,而城外敌军又强大,合力抵抗敌军,也许可以成功。如果分散,势必不能一一保全。况且刘縯部队还没有攻克宛城,不能前来救援。假如昆阳被敌军占领,只要一天的功夫,我军各部也就都完了。现在怎么能不同心同志,共举大业,反而想要守着妻子家产呢?”正在此时,侦察的骑兵回来,报告说:“敌人大军即将来到城的北面,军阵达几百里,看不到头。”将领们一向小看刘秀,到了这样紧急的时候,才互相商量道:“再去请刘将军计划这件事。”刘秀又给将领们讲明成败因素,将领们都说:“是的。”这时城中只有八、九千人,刘秀让王凤和廷尉大将军王常守卫昆阳,自己夜里同五威将军李轶等十三人骑马逃出昆阳城的南门,在外面招集士兵。
当时开到昆阳城下的王莽军将近十万,把昆阳包围了几十层,列营上百个,战鼓声响彻几十里。他们还挖地道,用战车撞城,用许多弓弩向城里乱射,箭下如雨。城内的人为了躲避飞箭,背着门板出外打水。王凤等乞求投降,不被理睬。
棘阳守长岑彭和前队副将严说同守宛城,汉军围攻了几个月,城中因为缺粮而人吃人,于是全城投降。更始皇帝进城,并建都宛城。
刘秀到了郾、定陵等地,调派各营的全部军队出发。将领们贪图财物,想要分出一部分兵士留守。刘秀说:“现在如果打败敌人,大功告成,有万倍的珍宝;如果被敌人打败,死无全尸,还有什么财物!”于是征发了全部军队。六月初一,刘秀和各营部队一同出发,亲自带领步兵和骑兵一千多人作先部队,在距离王莽大军四五里远的地方摆开阵势。王寻、王邑也派几千人来交战,刘秀带兵冲了过去,斩了几十人首级。王寻、王邑的部队后撤。汉军各部一同冲杀过去,斩了数百上千个首级。汉军接连得胜,继续进军,将领们胆魄更大,没有一个不是以一当百。刘秀就和三千人从城西水岸边攻击王莽军的主将营垒。
王寻、王邑轻视汉军,亲自率领一万余人巡行军阵,命令各营都按兵不动,单独迎上来同汉军交战,结果失利,大部队又不敢擅自救援,王寻、王邑阵营混乱,汉军趁机击溃敌军,终于杀了王寻。昆阳城中的汉军也击鼓呐喊着冲杀出来,里应外合,呼声震天动地。王莽军大败,逃跑者互相踩踏,倒在地上的尸体遍布一百多里。适值大雨倾盆,河水暴涨,掉入水中淹死的士兵上万,河水都不能流动。王邑、严尤、陈茂等以轻骑踏着死人渡河逃走。王莽军的士兵逃跑,各回故乡,只有王邑和他带领的长安勇士几千人回到洛阳。于是海内豪杰一致响应,都杀掉当地的州郡长官,自称将军,用更始年号,等待更始皇帝的诏命。