汉灵帝光和六年(公元183年),巨鹿人张角信奉黄老道教,教授妖术,号称“太平道”。他用咒语符水给人治病,让病人跪拜,自首罪过,有些病人竟然就此痊愈,众人将他奉若神明。张角分别派弟子们周游四方,辗转诱骗,十几年间信徒达到几十万,青、徐、幽、冀、荆、扬、兖、豫八州之人,无不响应。有人丢弃、变卖财产,流离奔波去见张角,堵塞了道路,尚未到达而死在途中的也数以万计。郡、县不了解他们的意图,反说张角教民向善,因而为百姓所拥戴。
太尉杨赐当时正担任司徒,他上书说:“张角欺骗百姓,虽接到免除罪责的赦令,仍不思悔改,反而逐渐蔓延扩张。现在如果交给州郡捕捉征讨,恐怕更加骚乱,反而加速祸患,应嘱咐刺史、2000石官员分别流民,各自送归本郡,以此孤立、消弱张角的党羽,然后诛杀首领,可以不劳而将其平定。”恰好杨赐离职,事情就搁置下来。
不久,司徒掾刘陶又上疏陈述杨赐原先的建议说:“张角等人的阴谋益发严重,各地私下议论,说张角等人已偷偷潜入京师,窥视朝政。他们鸟声兽心,私下相互呼应。州郡忌讳此事,不想让朝廷知道,只是私下相互告知,不肯公开发布文告。为此,建议陛下公开颁发诏书,悬重赏捉拿张角等人,以国土作为奖赏。官员中若有胆怯回避者,与张角等人同罪论处。”灵帝对这件事很不在意,反而下诏让刘陶整理《春秋条例》。
张角设置三十六方。方,如同将军,大方率万余人,小方率六七千人,各自选立首领,诈称“苍天已死,黄天当立,岁在甲子,天下大吉”。在京师及各州郡官府的门上都用白土写上“甲子”二字。大方马元义等人先招收了荆州、扬州的几万人,约定在邺城起事。马元义多次往来京师,由中常侍封、徐奉等人做内应,约定于次年三月五日京城内外一同起事。
汉灵帝中平元年(公元184年)春天,张角的弟子济南人唐周上书告密。于是收捕了马元义,将其在洛阳车裂。下令三公、司隶考察宫廷官吏及百姓信奉张角之道的,诛杀了1000多人,下令冀州追捕张角等人。张角等人知道事情已经泄露,昼夜驰令各方,立即全部起兵,都用黄巾包头作为标志,因此当时人称他们是“黄巾军”。二月,张角自称天公将军,他的弟弟张宝称地公将军,张梁称人公将军。他们在各地焚烧官府,劫掠乡邑,许多州郡失守,官吏逃亡。一个月之内,天下响应,京师震动。安平、甘陵两封国的人各自擒王,响应反贼。
灵帝召集群臣会议。北地太守皇甫嵩认为,应解除党禁,拿出皇宫中的钱粮马匹赏赐军士。灵帝又向中常侍吕强询问计策,吕强说:“党锢积时已久,人情怨愤,如不赦免,易与张角合谋,使变乱扩大,后悔也无法补救。眼下,请陛下先把左右卑鄙污浊之人杀掉,大赦党人,再考察刺史、郡守的能力,那盗贼就不会平定不了。”灵帝心中惧怕,听从了他们的建议。
灵帝曾想登上永安宫的望台,观看皇宫周围的景致。宦官们生怕灵帝看到自己的宅第,便让中大人尚但劝阻灵帝,说:“天子不应当登高,登高则会使人民流散。”灵帝从此不再敢登较高的楼台亭榭。及至封、徐奉为张角做内应的事情败露,灵帝斥责诸位常侍说:“你们常说党人图谋不轨,将他们全都禁锢起来,有人甚至遭到诛杀。现在党人倒是在为国家出力,你们反与张角勾结,该不该处斩?”宦官们都叩头说:“这些都是王甫、侯览干的。”于是,诸位常侍都收敛退避,各自将他们在外担任州郡官员的亲属及子弟召回。
赵忠、夏恽等人一同向灵帝诬告吕强,说:“吕强与党人一起议论朝廷,经常阅读《霍光传》,他的兄弟全都在官位上贪赃枉法。”灵帝听后,令中黄门带着兵器召吕强入宫。吕强得知灵帝召他的用意后,忿忿地说:“我死之后,必有大乱。大丈夫要尽忠报国,怎能去面对狱吏呢!”便自杀了。灵帝下令逮捕吕强的亲属,将财产没收。
侍中河内人向栩上书讥刺灵帝左右亲信。张让诬陷向栩与张角同心,打算做张角内应,便将他逮捕,送至黄门北寺狱杀掉。郎中中山人张钧上书说:“我认为张角所以能兴兵作乱,百姓乐于归附他,根源都在于十常侍放任自己的父兄、子弟、亲戚及其投靠者充任州郡长官,搜刮财利,掠夺百姓,百姓无处诉冤,所以谋议不轨,相聚为盗贼。现应斩杀十常侍,把他们的头颅悬挂到南郊,向百姓谢罪,再派使者把此事布告天下,就可以不必兴师动旅而大寇自然消解。”
灵帝将张钧的奏章交诸常侍看,这些人全都吓得摘下帽子,除去鞋袜,下跪叩头,请求灵帝允许他们到洛阳专门审理皇帝亲自交办案件的诏狱去投案自首,并将家产献出,用以补助军费。灵帝下诏,令诸常侍全都穿戴起表示官位的衣帽鞋袜,继续担任原职。他对张钧上奏一事发怒说:“这真是个狂人!难道十常侍中本不该有一个好人!”御史顺承灵帝的心意,诬奏张钧信奉黄巾道,遂将他逮捕入狱,拷打致死。
南阳黄巾军将领张曼成攻杀了太守褚贡。灵帝向太尉杨赐问起黄巾军的情况,杨赐如实回答,灵帝感到不快。
四月,杨赐因贼寇之事被罢免。任命太仆、弘农人郑盛为太尉。不久,灵帝批阅旧公文,得见杨赐与刘陶所上关于张角的奏章,就封杨赐为临晋侯,刘陶为中陵乡侯。皇甫嵩、朱俊合领4万多人共同讨伐颍川的黄巾军,二人各自统领一军,朱俊与黄巾军将领波才交战,被击败;皇甫嵩率军进驻长社,固守县城。汝南黄巾军在邵陵击败了太守赵谦。广阳黄巾军杀死了幽州刺史郭勋和太守刘卫。
波才率黄巾军将皇甫嵩围困在长社县城。皇甫嵩兵少,军中都感到恐慌。黄巾军的营寨所设之处荒草遍野,适逢狂风大作,皇甫嵩让士兵们全都手持成束苇草上城。另命一批勇士,偷偷地越过包围圈,放火烧草并高声呐喊。与此同时,城上的军士也一齐点燃火把,与之呼应。皇甫嵩率军从城中擂鼓呐喊而出,直捣敌阵。黄巾军大惊,溃散奔逃。这时,恰好骑都尉、沛国人曹操率兵赶到。五月,皇甫嵩、曹操与朱俊会师,再次出战,大败黄巾军,斩杀数万人。灵帝封皇甫嵩为都乡侯。
北中郎将卢植连续战斗,攻破张角军,斩杀俘获1万多人,张角等人退保广宗。卢植构筑围塞,开凿堑沟,制造云梯,准备攻克此城。灵帝派小黄门左丰前来查视,有人劝卢植贿赂左丰,卢植不肯。左丰回京对灵帝说:“广宗之贼容易打败,卢中郎却固守营垒,休息军队,等待老天杀贼。”灵帝大怒,用囚车将卢植押解回洛阳,判处比死罪轻一等的处分。派东中郎将陇西人董卓前往代替卢植。
十月,皇甫嵩与张角的弟弟张梁在广宗交战,张梁的部众精锐勇敢,皇甫嵩不能获胜。第二天,皇甫嵩关闭营垒,休整士卒,观察敌情变化。当得知黄巾军斗志稍有懈怠,就于夜间悄悄整顿兵马,清晨鸡鸣之时,飞驰冲向黄巾军阵地。交战到黄昏时,大破黄巾军,斩杀张梁,俘虏敌兵3万,赴河而死者约5万人。张角在此之前已死,于是剖开其棺木,斩尸,把人头传往京师。