更始帝元年(公元23年)正月,汉军和下江兵共同进攻甄阜、梁丘赐率领的王莽军队,斩甄阜和梁丘赐,消灭2万余人。王莽的纳言将军严尤和秩宗将军陈茂企图据守宛城阻击汉军,不久汉军将宛城包围。
三月,汉将王凤和太常偏将军刘秀等进击昆阳、定陵、郾城,将这些城邑一一攻克。王莽听说严尤和陈茂兵败,就派司空王邑向各地守军将领传达命令,并命王邑和司徒王寻共同率领各路兵马,去镇压山东地区的义军。他们征聘了当时所谓懂得63家兵法的人,充任军中参谋官佐;任用长人巨毋霸为垒尉,专管构筑营垒;又驱赶了大群的虎、豹、犀牛、象一类的猛兽,预备在作战时助威。王邑到了洛阳,各州郡的长官都挑选了精兵,亲自率领来会合。当时约定来会师的共有42万人,号称百万。其余还在途中的,旌旗、辎重,连绵千里,不绝于路。五月,王寻、王邑率领人马,从颍川南下,与严尤、陈茂的部队会合。
汉军的一些将领看见王邑、王寻军声势浩大,都退入昆阳,惊慌失措,担忧妻儿老小,想分散回去,各保自己的地区。刘秀说:“目前我军兵粮都少,而外面又有强大的敌人,集中兵力抗击,还有可能胜利;如果分散行动,势必都难保全。昆阳一旦失守,一天之内,各部也将被逐一歼灭。今天我们不同心协力、同存亡、共立功业,反而贪生怕死、只各守自己妻子儿女和财物,这样行吗?”众将大怒说:“刘将军!你怎敢教训起我们来了!”刘秀听了,便笑着站起来。恰好侦探骑兵回来,报告说:“王寻大兵即将到达城北,军队连绵百里,还看不清后卫。”众将向来轻视刘秀,见情况紧急,这才互相商量说:“再请刘将军计划破敌吧!”于是刘秀又分析情况,筹划具体行动方案。众将听后都说:“对,照你说的办吧!”当时,城里汉军仅有八九千人,刘秀就派王凤和廷尉大将军王常守昆阳,自己于当夜和五威将军李轶等十三骑从南门而出,到外面去收集部队,预备内外夹击莽军。
那时,莽军已到达城下的近10万,刘秀等人几乎不得出城。王寻、王邑指挥大军围困昆阳。严尤劝王邑说:“昆阳城小而坚固,一时难于攻下,现在伪皇帝刘玄在宛城,如果急速向宛城进军,他们定会逃跑。宛城的刘玄兵败,昆阳也必然自行屈服。”王邑说:“我以前围攻翟义时,就因为没有能生俘他而受到指责。现在率领百万大军,碰到敌人城池竟绕道而过,不能攻下,这怎能显示我的威风!应当先杀绝这个城里的军民,踏着鲜血,全军前歌后舞而进,难道不更感痛快吗?”于是,莽军就把昆阳包围了十几层,设下了100多座军营,擂鼓之声数十里之外都能听到。他们挖地道,使用冲车和棚车来攻城,集中了所有的弩机乱射,箭像雨一样倾泻下来。城中的军民要出来打水,都得顶着门板,以防敌箭。王凤要求投降,莽军不同意。王寻、王邑自以为昆阳指日可下,大功即可建成,便不把作战的事放在心上。严尤建议说:“我们最好让昆阳守敌逃出一些,传播失败消息,使宛城的汉军也恐怖,以动摇其军心。”王邑又不听。
刘秀到了郾城、定陵,要集中各营全部兵力驰援昆阳,但各营将领贪惜自己的财物,打算分兵留守。刘秀说:“今天如果能破敌,珍宝财物要比现在多万倍,我们的大事也可成功;如果我们为敌人所败,连脑袋都保不住,还谈什么金银财物呢?”于是就命令全部出发。六月八日,刘秀与各营人马一起向敌营开进,还亲自率领了1000多步、骑兵为前锋,逼近距王莽大军四五里处,摆开战斗队形,以待出击。王寻、王邑派兵数千人出来迎战。刘秀亲自率领人马冲锋,杀了莽军数十人。各将领都欢喜地说:“刘将军平时看到小敌害怕,今天见了大敌却很勇敢,真是奇怪。以后还是请你在前面领导我们,我们协助你破敌!”刘秀等又发起攻击,王寻、王邑的土兵退却,众部将领乘胜追击,又杀死成百上千的敌人。刘秀接连打了几场胜仗,众将领胆量也更壮了,没有一个不是以一当百的。刘秀见全军振奋,于是就和敢死队3000人从城西水道去冲击敌人的中坚。
王寻、王邑不把刘秀放在眼里。他们亲自率领了万余人巡视阵地,命令各营按部管束自己的队伍,没有命令,不得擅自出动。王寻等出战并不顺利,大军拘守命令,不敢擅自相救,王寻、王邑的战阵被刘秀冲乱了。汉军乘胜打垮了莽军,杀死了王寻。城中的汉军见刘秀在城外取胜,也大喊冲杀,出城夹击莽军,喊杀声惊天动地。王莽军队至此全部崩溃。溃逃的莽军相互推挤践踏,死伤无数,尸体堆了100多里长。碰巧又遇上大雷、大风,屋瓦也都被大风刮走,大雨倾盆而下,溃川的水猛涨,随队的虎、豹都吓得腿发抖,莽军士兵掉在水里淹死的有万余人。王邑、严尤、陈茂等人仅以单人匹马,踩着死尸渡水才得逃脱。汉军缴获了莽军的全部军用物资,多得不可胜数,一连搬了一个多月还没有搬完。汉军把剩下搬不掉的都烧了。莽军的残兵各自逃回家乡。王邑仅带了从长安一起来的卫士数千人回到洛阳。消息传到长安,朝廷非常震动恐慌。各地豪杰纷纷起兵响应,杀掉本州郡的新朝官员,自称将军,采用汉的年号,等待诏命正式封号,数月内,遍及全国。