黃巾大暴動後,東漢朝廷十分驚慌,急忙任命外戚何進為大將軍,率領左右羽林、五營營士屯駐都亭(洛陽附近),並分遣八都尉屯兵函穀、大穀、廣成、伊闕、囅轅、旋門、孟津、小平津等八個險要關隘;又遣中郎將皇甫嵩、朱雋、盧植、董卓等率兵分頭鎮壓起義。為了糾集豪族地主武裝鎮壓起義,靈帝采納中常侍呂強建議,宣布取消黨禁,赦免黨人。於是各地豪族地主紛紛起兵,與黃巾軍為敵。當時朝廷中有一個頭腦比較清醒的郎中張鈞大膽向靈帝提出誅殺宦官,以謝人民的主張。他說:“竊惟張角所以能興兵作亂,萬人所以樂附之者,其源皆由十常侍多放父兄、子弟、婚親、賓客典據州郡,辜榷(搜刮)財利,侵掠百姓,百姓之冤無可告訴,故謀議不軌,聚為盜賊。宜斬十常侍,懸頭南郊,以謝百姓。又遣使者布告天下,可不須師旅,而大寇自消。”昏庸的靈帝不但不采納,反而替宦官辯護,結果張鈞被宦官所誣殺。
起義前期,各個戰場上的黃巾軍均給予官軍以沉重打擊。張角領導的冀州黃巾軍活捉安平王劉續、甘陵王劉忠.斬殺幽州刺史郭勳、太守劉衛,攻占了廣宗(今河北威縣東)、下曲陽(今河北晉縣西),並先後打敗盧植和董卓率領的官軍。當年三月,南陽黃巾軍張曼成攻克宛城,殺死太守褚貢。四月,潁川、汝南黃巾軍在波才、彭脫指揮下,打敗朱雋,並把皇甫嵩的主力包圍在長社(今河南長葛東北)。一時之間,農民軍聲勢浩大,官軍被打得狼狽不堪。
本來形勢的發展對黃巾軍很有利,但由於農民軍缺乏作戰經驗,波才的潁川軍包圍長社後,失去警惕,“依草結營”,給皇甫嵩以可乘之機。皇甫嵩乘風放火,對起義軍發起突然襲擊。皇甫嵩令軍士皆手持一束燃葦登城,使銳士乘間突圍,縱火大呼,城上舉燎相應,嵩從城中鼓噪出擊,恰在此時騎都尉曹操率領援軍趕到,合攻黃巾軍,義軍因之大敗,幾萬人遭到血腥屠殺。接著,波才軍餘部於陽翟,彭脫義軍在西華,相繼失敗。之後,皇甫嵩調軍向東進攻,擊敗了汝南、陳國黃巾。皇甫嵩又北上東郡,東郡黃巾軍領袖卜巳不幸被俘。朱雋一軍則繼續南下進撲南陽一帶義軍。
在南陽戰場上,張曼成斬殺南陽太守楮貢後,在宛下屯駐百餘日,軍事上沒有新的進展。同年六月,東漢政府派秦頡率兵向起義軍反撲,張曼成不幸犧牲。黃巾軍推趙弘為帥,隊伍擴充到十多萬人,將新任的南陽太守秦頡趕跑,再據宛城。朱波會同荊州刺史徐瓔、南陽太守秦頡等地方軍,合力圍攻宛城。從六月至八月,義軍粉碎官軍多次進攻,堅守住了宛城,朱淺幾乎被撤職。但黃巾軍錯過主動出擊時機,坐使官軍重新積聚力量扭轉局麵。趙弘在戰鬥中犧牲後,義軍又推韓忠為帥,韓忠被殺,再推孫夏為帥,繼續戰鬥。由於官軍不斷增兵,義軍毫無後援。十一月,宛城陷落,孫夏率義軍向西鄂(今河南南陽市北)境內的精山轉移。朱洩乘機追擊黃巾軍,孫夏戰死,黃巾軍又有一萬多人犧牲,南陽的黃巾軍主力,遭到了巨大的挫折。
在冀州地區,起義爆發之後,張角首先率領義軍攻占廣宗(今河北威縣東)、下曲陽(今河北晉縣西)諸城邑。東漢政府派北中郎將盧植前往鎮壓。盧植開始雖然取得小勝,斬獲黃巾,軍萬餘人,但他雖傾盡全力“築圍鑿塹,造作雲梯”,一直未能攻下廣宗。東漢政府無奈,隻好又改派東中郎將董卓代替盧植去鎮壓,董卓在下曲陽與義軍較量,又被張角一舉擊破。他圍攻廣宗三個月,廣宗屹然不動。八月底,東漢政府調左中郎將皇甫嵩代替董卓,投入廣宗戰場。這時張角已病死由其弟張梁統率廣宗義軍。