反对王莽政权的农民起义,首先发生在北方边郡地区。王莽为了出击匈奴而进行的征发,在边郡比在内地更为严重。边境数十万驻军,不但仰给边民供应,而且还大肆骚扰,边民不堪其苦,铤而走险,聚众反抗。始建国三年(公元11),边民弃城郭流亡,随处暴动,并州、平州一带更为猛烈。天凤二年(公元15),五原、代郡民举行暴动,数千人为群,转入旁郡。
接着,黄河流域和长江流域也相继出现了农民暴动。天凤四年,临淮人瓜田仪在会稽长洲(今江苏苏州西南)起义,出没于湖海之间。同年吕母在海曲(今山东日照)起义,杀县令,入海坚持战斗。此起彼伏的暴动,预示大规模的农民战争即将来临。
天凤年间,荆州一带遇到连年的大饥荒,农民相率到野泽中掘荸荠为食。他们人数越聚越多,形成一支武装力量,推新市(今湖北京山境)人王匡、王凤为首领,不时攻击附近的乡聚。他们隐蔽在绿林山中(今湖北京山北),因而被称作绿林军。几月后,绿林军发展到七八千人。但是那时他们还没有攻城略地的打算,只盼望年成好转,能够返回田间。
地皇二年(公元21),王莽的荆州牧发兵进攻绿林军,绿林军出山迎击获胜,部众增至数万人。地皇三年,绿林山中疾疫流行,绿林军出山。一支由王常、成丹等率领,西入南郡(治今湖北江陵),称下江兵;另一支由王匡、王凤、马武等率领,北上南阳,称新市兵。新市兵攻随县时,平林人陈牧、廖湛率众响应,于是绿林军中又增添了一支平林兵。汉宗室刘玄这时也投身于平林兵中。
南阳大地主刘縯、刘秀兄弟也是汉宗室,他们以“复高祖之业”相号召,联络附近各县地主豪强,并且把宗族、宾客组成一支七八千人的军队,称为舂陵军,参加反对王莽的行列。舂陵军与王莽军接战不利,乃与向北折回的下江兵约定“合纵”。这时绿林军连败莽军,发展到十多万人。绿林军领袖为了扩大影响,于宛城南面的淯水上拥立刘玄做皇帝,恢复汉的国号,年号更始(公元23)。刘玄在宗室中是没落的一员,参加起义虽早,却无兵权。绿林军领袖拥刘玄为帝,这是他们受到刘汉正统思想影响的表现;但是立刘玄而不立野心勃勃的刘縯,又是绿林军领袖疏远刘縯、刘秀的结果。
绿林建号以后,王莽发州郡兵四十二万,由王邑、王寻率领,阻击绿林军。六月,王莽军前锋十多万人,围绿林军于昆阳(今河南叶县)。绿林军八九千人,由王凤、王常率领,坚守昆阳,刘秀则突围征集援兵。那时昆阳城外围兵数十重,列营百数,围兵挖掘地道,又用撞车攻城,积弩乱发,矢下如雨。刘秀等十三骑突出围城,发郾、定陵营兵数千人援昆阳,王邑、王寻一战失败,王寻被杀。城中守军乘势出击,里外合势,莽兵大溃,士卒相践踏,奔走百余里。绿林军在这一战役中夺获军实辎重车甲珍宝,不可胜数。这就是中国历史上著名的以少胜多的昆阳之战。昆阳战后,海内闻风响应,起兵诛杀牧守,自称将军,用汉年号,以待更始诏命。显然,这次战役对于绿林军入关和王莽覆灭,起了决定作用。
刘秀在昆阳之战中立了功绩,刘縯又夺得宛城,势力逐渐凌驾农民军,因此新市、平林诸将劝更始帝把刘縯杀了。接着,绿林军分兵两路进击王莽。一路由王匡率领,攻克洛阳。更始帝在洛阳派遣刘秀到黄河以北去发展势力,刘秀北上后,逐步脱离了农民军的控制。另一路由申屠建、李松率领,西入武关。析县人邓晔起兵攻下武关,迎入绿林军,合兵直取长安,关中震动。这时长安发生暴动,王莽被杀,长安被绿林军迅速攻克。更始二年初,更始帝迁都长安。
进入长安的绿林军纪律严明,府库宫室一无所动,长安市里不改于旧。绿林军瓦解了一批关中的豪强武装,迅速平定三辅。但是不久以后,更始帝自己首先沉醉在宫廷生活中,地主儒生大肆活动,起义军内部离心离德的现象便逐渐出现了。
比绿林军发动起义稍后,琅邪人樊崇等在莒县起义。樊崇作战勇敢,青、徐各地起义领袖逄安、徐宣、谢禄、杨音等都率部归附他。他们在泰山、北海一带进行斗争,击败田况所部莽军。参加这支起义军的都是为饥饿所迫的农民,他们同绿林军一样,起初并无攻城徇地的意图。他们因袭汉朝乡官、小吏称号,把各级首领分别称为三老、从事、卒史,彼此之间以巨人相呼。他们没有文书、旌旗、部曲、号令,口头相约:“杀人者死,伤人者偿创。”为了作战时与敌人相区别,他们把眉毛涂红,因而获得赤眉军的称号。
公元22年,王莽派太师王匡和更始将军廉丹,率军十多万,进攻这一支起义军。王匡、廉丹的军队残害百姓,十分横暴,百姓作歌道:“宁逢赤眉,不逢太师(王匡),太师尚可,更始(廉丹)杀我。”赤眉军在成昌(今山东东平)击败莽军,杀廉丹,势力大为扩展。当刘玄进入洛阳时,赤眉军也在中原活动,樊崇等二十多人还接受了刘玄的列侯封号。刘玄排斥赤眉,樊崇等人乃脱离刘玄,转战于今河南一带。
赤眉军虽然连战获胜,但是部众思归。赤眉领袖认为部众回乡必散,于是率领他们西攻长安。公元25年,赤眉军进至华阴,有众三十万。赤眉领袖在巫师怂恿下,在军中找到一个没落的西汉宗室、十五岁的牛吏刘盆子做皇帝。接着,赤眉军进攻长安,推翻了刘玄的统治。
赤眉入关时,刘秀也派兵向关中进发。在此之前,当刘秀于更始元年(公元23)冬渡河北上时,黄河以北有铜马、大彤、高湖、重连、铁胫、大枪、尤来、上江、青犊、五校、檀乡、五幡、五楼、富平、获索等部农民军。他们各领部曲,或以山川土地为名,或以军容强盛为号,据说有数百万人。除了农民军以外,各地豪强地主武装和王莽的残余势力也还不少。豪强地主在邯郸立诈称成帝之子的卜者王郎为帝,声势最大。刘秀依靠信都(治今河北冀州)太守任光、昌成(今河北冀州西北)人刘植、宋子(今河北赵县东北)人耿纯等地主武装的支持,又得到上谷(治今河北怀来东南)太守耿况、渔阳(治今北京密云西南)太守彭宠的援助,击败了王郎。更始帝派人立刘秀为萧王,并令他罢兵去长安。刘秀羽翼已成,拒不受命,留在河北坐观关中的变化。他逐个吞灭了铜马、高湖、重连等部农民军,关中一带把他称作“铜马帝”。
公元25年,当赤眉军迫近长安时,刘秀在鄗县(今河北高邑东南)之南即皇帝位(光武帝),沿用汉的国号,以这一年为建武元年。不久,刘秀定都洛阳,史称东汉。同年九月,赤眉军入长安。长安附近的豪强地主隐匿粮食,武装抵制赤眉军。赤眉军粮尽不支,西走陇阪,寻找出路。赤眉军在那里受到割据势力隗嚣的阻挡和风雪的袭击,折返长安,引众东归。这时,刘秀的军队已经扼守殽函地区,截断了赤眉军东归道路。赤眉军奋勇力战,但终因粮尽力绌,于建武三年(公元27)春失败。
汉光武帝刘秀继续镇压河北农民军余部,并削平各地的割据势力,于建武五年统一了北方的主要地区。建武九年他平定了割据天水的隗嚣,建武十二年平定了割据蜀地的公孙述,实现了全国的统一。