起义口号既出,时间也已经基本确定,张角便开始紧张有序的起义准备工作。
张角本打算让大方首领马元义等先集结荆、扬二州的信徒,在邺城(今河北临漳)会师后起事,力求在京师教徒的接应配合下,一举攻占京师。为达到这一目的,马元义往返于洛阳、邺城之间,拉拢了中常侍徐奉、封谞等,让徐、封二人在内接应,并把最终起义的时间确定为公元184年的3月5日。
没想到,就在起事前一个月,张角的弟子、济南人唐周突然叛变,向官府告密,使起义计划完全暴露。马元义被朝廷逮捕,车裂于泾阳。朝廷内外,不论官员、禁军将士还是普通百姓,只要是太平教的信徒,全部被捕入狱,一千多人被处死。全国范围内的镇压行动开始了。
鉴于当时形势危急,张角果断下令各方立刻发动起义。起义虽然十分仓促,但由于有着十余年的长期准备,所以“七州二十八郡,同时俱发”,几天之内,得到天下响应。起义军头裹黄巾,所以被称为“黄巾军”。
起义开始后,张角自称“天公将军”,其弟张宝为“地公将军”,张梁为“人公将军”,以冀州地区为中心展开活动。张曼成带领南方义军,以南阳为中心进行活动。颍川、汝南一线,是由波才、彭脱领导东方的主力。各地起义军从北、南、东三个方向向洛阳进逼,形成重重包围的趋势。
黄巾军起兵后,其战斗精神尽管十分高,烧官府,杀官吏,攻破州郡坞壁,州郡长官纷纷败逃。一时之间,各地的黄巾军像风暴一样气势凶猛,东汉统治者为之震动。但是黄巾军还是不足以推翻腐朽的东汉王朝,因为东汉政权的上层统治并没有从根本上被破坏。
为了对付黄巾军的进攻,灵帝任命何进为大将军,统率左右羽林军以及屯骑、越骑、步兵、长水、射声等五营将士,驻扎于都亭,守卫洛阳。在洛阳附近,设置了函谷关(今河南新安东)、太谷关(今河南洛阳东南大谷口)、广成关(今河南临汝西)、伊阙关(今河南洛阳南)、辗辕关(今河南偃师东南)、旋门关(今河南鞏县东)、孟津关(今河南孟津西北)、小平津关(河南孟津东北)等八关都尉,分别统率自己的兵马,驻守一方,保卫洛阳。
汉灵帝召集群臣商讨应对之策。北地郡太守皇甫嵩提出应把禁止党人做官的禁令解除,从而团结扩大自己的力量;并将皇帝私人所有的中藏府钱财以及西园厩中的良马,赏赐给出征的将士。
灵帝又问中常侍吕强应该怎么办,吕强说:“对党人的禁令已经很久了,人们一直不满,如果不将党人赦免,他们将很容易和张角联合起来,叛乱之势便会更趋扩大,到那时,后悔也来不及了。如今,皇上应首先处死那些贪赃枉法的官员,并且释放所有的党人,还要对各地刺史、郡守的能力进行全面的考查。要是这样做,叛乱就能平息了。”出于对黄巾军强大势力的惧怕,灵帝不得不接受了吕强所提出的建议。于是大赦天下党人,已经被流放到边疆地区的党人及其家属都可以重返故乡。与此同时,集合全国各地的精兵,派遣北中郎将卢植讨伐张角,左中郎将皇甫嵩、右中郎将朱儁讨伐颍川地区的黄巾军。
波才领导的颍川起义军,彭脱领导的汝南起义军和阵地(今河南淮阳)的黄巾军在洛阳东南的豫州地区活动特别活跃。波才起兵攻占颍川郡以后,下一步目标直指京城洛阳,对东汉统治阶级构成了非常大的威胁。汉灵帝紧急调动左中郎将皇甫嵩、右中郎将朱儁率领四万人马,兵分两路,杀奔而来。朱儁先与波才交锋,被波才打得大败。波才率军继续追击,又将皇甫嵩所部包围于长社(今河南长葛东北)城中。按说黄巾军兵多将广,作战英勇,长社小城不日即可攻下。可是,由于波才的军事经验不足,犯了兵家依草结营之大忌,反被皇甫嵩纵火焚烧了大营,结果,起义军反胜为败。随后朱儁率部重整旗鼓,汉灵帝又派来了曹操部队增援,起义军受到内外夹攻,数万战士战死疆场,最后失败。波才突围而出,撤到阳翟(今河南禹县境)后,被追杀。过了不久,陈国、汝南、东郡的起义军也遭到了朝廷的残酷镇压。
张角领导黄巾军在巨鹿誓师起义后胜果累累,他与张宝、张梁兄弟三人各自率领人马向官军发起了猛烈进攻,不久,冀州的大部分地区便被占领了,大有南下、西进攻取洛阳之势。汉灵帝对此十分害怕,在将皇甫嵩、朱儁派往颍川的同时,把北中郎将卢植派往冀州,征讨张角领导的黄巾起义军。卢植接连打了胜仗,杀死了一万多黄巾起义军。张角改变了方针,率起义军固守广宗(今河北威县东),以便凭借坚城寻找时机。卢植让士兵垒筑围墙、开挖壕沟,制作云梯,准备攻城。张角十分被动。恰在此时,卢植与宦官发生内讧,宦官们陷害卢植不全力进攻只知静候观望,汉灵帝也对卢植久久不能战胜张角而十分恼怒,将卢植用囚车押回京师问罪。汉灵帝改派东中郎将董卓掌管冀州军事。董卓是一介武夫,没有多少军事才能,来到冀州后不久,便被张角领导的起义军打得溃不成军,成为起义军的手下败将,被汉灵帝革职查办。
中平元年(184年)六月,皇甫嵩镇压了颍川、汝南等地的起义军之后,汉灵帝急令他前往冀州镇压起义军。这时,黄巾军首领张角因病去世,冀州起义军一分为二,一支由张梁率领驻扎于广宗,一支由张宝率领驻扎于下曲阳(今河北晋县东)。皇甫嵩领兵浩浩荡荡扑来,首先遇到了张梁领导的广宗起义军。皇甫嵩屯兵坚城之下,一时没有办法破城。他与起义军交战经验丰富,眼见强攻不行,马上命令休兵一天,以寻找机会。起义军战斗多日,疲劳过度,再加上看到敌军一日没有进攻,便放松了警惕。皇甫嵩趁着天黑之际将其部队调遣到广宗城下,天刚一亮就向起义军发起猛攻。沉睡中的起义军慌乱应战,虽然奋起抵抗,可由于事起突然,始终未能扭转被动的局面。激战至早饭时,三万多黄巾战士英勇战死,主帅张梁也战死沙场。余下的五万多黄巾战士宁死不屈,毅然跳下水流湍急的清河,被流水卷走。广宗的黄巾战士就这样失败了。打了胜仗的皇甫嵩大施淫威,他将天公将军张角从坟墓中掘出,开棺戮尸之后又残忍地将其头颅割了下来,派人送往京师请功。由于广宗起义军失利,下曲阳地区的黄巾军就处于孤军奋战的局面了。十一月,皇甫嵩率领官军气势汹汹地杀奔下曲阳。张宝率领起义军与官军展开了一场血战,最后张宝战死,很多起义军惨遭屠杀。皇甫嵩乘胜追击,消灭了下曲阳的起义军。
在东汉末年的黄巾起义中,南阳地区张曼成领导的起义军也是非常有战斗力的一支。张曼成自称神上使,率领数万战士与南阳太守的军队进行激战,在中平元年(184年)三月的一次战斗中将太守褚贡都杀死,取得了重大胜利。在这之后,张曼成将宛城作为根据地到处攻击东汉军队,在一百多天的时间里南征北战,战果辉煌。新任南阳太守秦颉在六月突然袭击宛城,张曼成没有防备,壮烈牺牲。起义军在新帅赵弘的率领下坚持战斗,并迅速发展到十多万人,又占领宛城。当时,朱儁已经将颍川、汝南地区的起义军全部清剿又被派往南阳地区。六月,朱儁联合了荆州刺史徐谬及南阳太守秦颉的一万八千精兵包围了宛城。由于起义军英勇不屈的反击,朱儁连攻两个月,都没有攻下宛城。焦躁不安的汉灵帝对朱儁越来越不满,心中产生了换将的想法。如果不是司空张温说临战换将乃兵家之大忌的话,朱儁也会落得卢植的下场。朱儁在前方也听到了一些朝中的消息,为了保住自己的官职,急忙督促军队加紧进攻。十月,宛城终于被朱儁攻破,黄巾军首领赵弘也被他们杀死。
朱儁心中洋洋自得,做起了加官晋爵的美梦。出乎意料的是,他刚离开宛城,黄巾战士便以韩忠为帅,在宛城再次起义。朱儁非常恼怒,中途折回重新杀向宛城,又将宛城包围起来。朱儁让一部分官军在宛城西南修建土山假装进攻西南方向,他则乘起义军主力奔救西南之机率精兵五千突袭宛城东北角,攻破宛城的第一道城墙。
韩忠被逼无奈,只得退守小城,向敌请求投降了。众位将领都愿意接受,可朱儁说:“在军事上,本来就有形式相同而实质不同的情况。从前秦末项羽争霸的时候,由于君主还没确定,只有依靠奖励那些归附者,才能引来更多的人前来归顺。现在天下统一,只有黄巾军起来造反,如果接受了他们的投降,就不能鼓励那些守法的百姓;只有严厉镇压,才能惩罚罪犯。要是现在就接受他们投降的建议,就会助长叛军的气焰。他们在有利时起兵进攻,不利时则请求投降。接受他们投降就是怂恿敌人的做法,不是上策。”
朱儁接连发动猛攻,没有攻克。他登上土山,观察黄巾军的情况,回头对司马张超说:“原因我已经明白了。眼下叛军被严密包围,内部形势危急,他们既无退路,又不能求降,只有拼死一战才能有一线生机。万众一心,已是无法阻挡,更何况十万人一心呢!倒不如撤除包围圈,全力攻城。韩忠看到包围解除了,自己出来求生,如果出城的话,必然会各寻生路、斗志全无。这是打败敌人的最好办法。”于是朱儁解除包围。韩忠果然上当,出城迎战,朱儁乘机大举进攻,大败黄巾军,杀死一万余人。
韩忠被杀以后,孙夏又被推举为残余黄巾军的领袖,又一次把宛城给占领了。朱儁发起猛攻,司马孙坚带领部下率先登上城墙,宛城被攻取。孙夏望风而逃,朱儁一直追至西鄂县的精山,又一次大破黄巾军,斩杀一万余人。黄巾军兵败如山倒。别的州、郡杀死的黄巾余众,每郡都有数千人。
声势浩大的黄巾大起义,坚持了九个月之久,终因敌我实力悬殊而失败了。可是东汉王朝统治的根基也在张角领导的这场大起义中动摇了。同时,在黄巾军的影响下,各地的农民武装仍没有放弃斗争,前后坚持达二十余年。
黄巾起义的暴风骤雨,并不能使统治者有所收敛,他们反而变本加厉地向人民搜刮。《后汉书·贾琮传》中记载:“时黄巾新破,兵凶之后,郡县重敛,因缘生奸。”《后汉书·皇甫嵩传》也说:“嵩既破黄巾,威震天下,而朝政日乱,海内虚困。”统治者的倒行逆施,所招致的后果只能是农民的不断反抗。《后汉书·皇甫嵩朱儁传》记载:“自黄巾贼后,复有黑山、黄龙、白波、左校、郭大贤、于氐根、青牛角、张白骑、刘石、左髭丈八、平汉、大计、司隶、掾哉、雷公、浮云、飞燕、白雀、杨凤、于毒、五鹿、李大目、白绕、眭固、苦唒之徒,并起山谷间,不可胜数。其大声者称雷公,骑白马者为张白骑,轻便者言飞燕,多髭者号于氐根,大眼者为大目,如此称号,各有所因。大者二三万,小者六七千。”
黄巾起义使东汉政府疲于应付,这样,东汉政府便不能不加强各州刺史的职权,使其兼管军政财赋。有的地方更设置州牧,使朝廷重臣出任其职,以便让他们更有力地联络地主武装,随时镇压农民起义。这样也增加了地方的独立性,形成了内轻外重、军阀割据的局面。这直接为曹操、刘备等军阀的崛起创造了条件。