公元9年,王莽代汉自立,建立新朝。王莽“托古改制”的做法导致阶级矛盾更趋激化,广大民众在忍无可忍的情况下,纷纷揭竿而起,以武力反抗新莽的统治。一时间起义烈火燃遍黄河南北和江汉地区。在众多农民起义军队伍中,以绿林、赤眉两支声势最为浩大。
公元23年,王莽派遣大司空王邑和司徒王寻奔赴洛阳,在那里征发各郡精兵42万进攻更始军。当新莽军逼近昆阳之时,昆阳城中的更始军仅有9000人。刘秀主张集中兵力,坚守昆阳,迟滞、消耗王邑军的兵力,掩护主力攻取宛城,然后伺机破敌。这时王邑的先头部队已逼近昆阳城北,紧急关头诸将同意了刘秀的建议,决定由王凤、王常等率众坚守城邑,另派刘秀、李轶等率13骑乘夜出城,赶赴郾县、定陵一带调集援兵。
王邑、王寻等人统率新莽军蜂拥抵至昆阳城下,将城团团围困,动用全部兵力列营百余座,轮番向昆阳城发起进攻,并挖掘地道,制造云车,企图强攻取胜。昆阳守军别无退路,依靠城内人民的支持,合力抵抗,坚守危城,多次击退王邑军的进攻,给敌人以很大的消耗和挫折。
刘秀等人抵定陵、郾县后,说服不愿出兵的诸营守将,率领步骑万余人驰援昆阳。此时王邑军久战疲惫,锐气早已丧失殆尽。刘秀亲率1000援军步骑为前锋,在距王邑军3公里处列成阵势,准备接战。王邑、王寻等人自恃兵力雄厚,骄妄轻敌,只派出数千人迎战。刘秀率众奋勇进攻,当场斩杀王邑军数十人,取得了初战的胜利,大大振奋了士气。
这时候,更始起义军主力已攻占宛城3日,但捷报还未传到昆阳。刘秀为了鼓舞全军士气,动摇敌人军心,制造了攻克宛城的战报用箭射入昆阳城中;又故意将战报遗失让王邑军拾去传播。消息传开,昆阳城中的守军士气更为高涨,守城更为坚决;而王邑军则由于顿兵昆阳坚城,久攻不下,又听到宛城失陷,士气更为沮丧。
刘秀乘敌人士气沮丧和主帅狂妄轻敌的弱点,精选勇士3000人迂回到敌军的侧后,偷偷涉过昆水(今河南叶县辉河),向王邑大本营发起猛烈的攻击。王邑等人未把刘秀放在眼里,又担心州郡兵失去控制,就下令各营不准擅自出兵,而由自己和王寻率领万人迎战刘秀的冲杀。在刘秀所率的精兵的猛烈进攻下,王邑手下的万余人马很快陷入被动挨打的困境,阵势大乱。诸将却又因王邑有令在先,谁也未敢去救援,结果王邑军败溃,王寻战死。
昆阳城内的守军见敌军主帅已脱离部队,敌军阵势已乱,也乘势及时出击,内外夹攻,杀声震天动地,打得王邑全军一败涂地。王邑军的将卒们见大势已去,纷纷逃命,互相践踏,积尸遍野。这时又恰遇大风飞瓦,暴雨如注,河水剧涨,王邑军涉水逃跑而被淹死的不计其数,只有王邑等少数人狼狈逃脱,窜入洛阳。