宦官和外戚外争权夺利,使得社会不安定,加深了人民的痛苦。而且,从汉和帝的时候起,全国各地接连不断地闹水灾、旱灾和蝗灾。农民实在没有活路了,只好离开家乡,四处逃亡,形成了一群一群的流民。流民四处乞讨,饿死冻死的很多,连首都洛阳的街头,也经常可以看到冻饿而死的流民尸体。当农民逼得走投无路的时候,他们终于被迫打出了造反的旗号,开始聚众起义。
从汉安帝刘祜在位的时候起,小规模的农民起义已时有发生。到汉灵帝刘宏在位的时候,终于爆发了一次波澜壮阔的黄巾大起义。
黄巾大起义是张角领导的。张角是巨鹿人,太平道的首领。太平道是道教的一派,宣传“黄天太平”思想,认为只有到了太平的时代,人们才能不愁吃穿,过无忧无虑的日子。张角本人懂点医道,常常免费给农民治病,病治好了,他就劝人家参加太平道。穷苦农民为了摆脱眼前困苦的生活,把张角看成是自己的救星,都纷纷信奉太平道,张角的信徒越来越多。在青、徐、幽、冀、荆、扬、兖、豫八州(即今山东、河北、河南、湖北、湖南、江西、安徽、江苏一带),太平道的信徒很快就发展到几十万人。
张角派弟子去把信徒们组织起来,把八个州的信徒组织成为三十六方,大方一万多人,小方六七千人、每一方都指派一名道领去领导,叫做渠帅。三十六个渠帅都听张角统一指挥。张角还制定了“苍天已死,黄天当立,岁在甲子,天下大喜”的十六字起义口号。“苍天”是指东汉,“黄天”是指起义军要创造的天下,甲子是年号。
公元184年,他们预定在3月5日,八个州同时发动起义。张角还叫人在首都洛阳地方州郡官府的门上,用白土写上“甲子”二字,标明这些官府衙门到时候都将改变主人,借以鼓舞人心。
张角手下最得力的弟子是大方渠帅之一的马元义。他经常到首都洛阳联系,传达张角的命令。张角叫他先把荆州、扬州两地的信徒几万人调到邺城集中,作为起义军的主力,以便配合首都附近各州郡的起义军进攻洛阳。
在预定的起义日期前一个月,济南的起义军中出了一个名叫唐周的叛徒,他写信给政府告密。赵义的消息泄露了。东汉政府逮捕了马元义,把当杀害。在洛阳受牵连被害的有一千多人,起义者的鲜血染红了洛阳的街头。东汉政府还下令搜捕张角。张角得知消息以后,连夜派人赶去通知各地的信徒,叫他们立即发动起义。
叛徒的告密虽然打乱了起义的日程,使得起义军牺牲了一个重要领袖和一千多名战士,但是并不能扑灭起义的烈火。各地区太平道信徒早已组织起来,有了充分的准备。接到张角的命令以后,三十六方立即同时发动起义。起义军用黄巾裹头,作为“黄天”的标志,因此被称为黄巾军。张角自己为天公将军,他的两个弟弟张宝和张梁称为地公将军和人公将军。他们三个人共同指挥起义军的战斗。
起义军每打到一个地方,就焚烧当地官府衙门,攻打豪强地主的城堡,捕杀为非作恶的官吏和地主。地方州郡的长官和大地主吓得纷纷逃窜。十几天工夫,封建统治的秩序就被打乱了。
东汉朝廷十分惊慌,派重兵守住洛阳和附近的关口,又派皇甫嵩为左中郎将,朱隽为右中郎将,率领四万多名精兵镇压黄巾起义军。颖川的黄巾军打败了皇甫嵩,把他围困在长社。官军看到黄巾军作战勇敢,声势浩大,都十分害怕。
老奸巨猾的皇甫嵩,却看出了黄巾军缺乏作战经验的弱点。他召集自己的部下说:“打仗要用计谋,不在乎人数多少。我看黄巾军结草为营,一定害怕火攻。如果我们乘着月黑风紧的夜晚去偷袭,放火烧他们的营寨,准能取得胜利。”在一个刮风的夜晚,皇甫嵩带领军官偷袭黄巾军,放火焚烧军营,黄巾军顿时大乱。黄甫嵩、朱隽和骑兵都慰曹操率领官军,包围了他们,乘乱砍杀了成千上万的黄巾军战士。汝南、陈留两地的黄巾军闻讯赶来援救,也被打败。
北方由张角兄弟亲自率领的黄巾军打了胜仗,打败了东汉官军的北中郎将卢植和中郎将董卓。汉灵帝赶快命令皇甫嵩从河南北上,夹击黄巾军。张角派张梁迎战皇甫嵩,两军在河北广宗大战。张梁作战很英勇,他率领黄巾军奋勇冲杀,打得皇甫嵩招架不住,只好紧闭营门,躲藏起来。就在战局十分紧张的时候,可惜张角得病死了。张梁因为料理哥哥的后事,放松了警惕。皇甫嵩乘机向黄巾军反扑。他命令官军连夜准备,天刚蒙蒙亮就发动进攻,攻破了黄巾军的大营。张梁率领部下奋勇抵抗,他和三万多名黄巾军壮烈牺牲。皇甫嵩居然劈开张角的棺材,砍下他的脑袋,送到京城里去请功。接着,皇甫嵩又去进攻张宝率领的黄巾军。张宝势孤力单,在下曲阳战死。
黄巾军的主力被东汉政府镇压下去了。但是各地黄巾军仍然在战斗,沉重地打击东汉朝廷的统治。在黄巾军影响下的各地农民起义军,也纷纷起来跟地主阶级斗争。直到汉灵帝的儿子献帝刘协的时候,农民起义的浪潮还没有平息下去。