公元161年,东汉将领皇甫规在凉州镇压羌人叛乱,打败了先零羌首领零吾。后来羌人仰慕他的威名,纷纷投降。皇甫规不仅治军有方,还整顿了凉州的贪官污吏,稳定了凉州形势。
公元184年,凉州(包括今甘肃、青海部分地区)的胡人北宫伯玉、李文侯率领当地羌人和胡人发起了叛乱,部分汉人也加入了叛乱队伍。随着中原政权分崩离析,叛军与朝廷的对抗结束,叛军力量成为地方割据势力。
叛乱刚开始时,叛军杀死了护羌校尉(负责管理羌族事务的汉朝官员)冷征,攻克了金城郡(今甘肃兰州)。在金城郡任职的汉人官吏韩遂和边章被叛军俘虏后,为了保命接受了叛军的劝降加入了叛军队伍,负责指挥作战。他们对朝廷感到失望也是加入叛军的原因之一。加入叛军之前他们曾上书朝廷,向朝中大臣游说要求诛杀祸乱朝政的宦官,但没人回应他们。加入叛军后,他们曾以“诛杀宦官”的名义向京师进军。
在韩遂、边章的率领下,叛军连战连捷,向东一直打到了长安附近的三辅地区(今陕西中部地区)。
汉灵帝召集群臣商讨对策,司徒崔烈认为凉州兵乱一直是朝廷的财政负担,建议放弃凉州,守住三辅地区即可。尚书台尚书傅燮反对崔烈的意见,他说凉州是西部边陲要地,高祖和武帝花了不少心血才打下来的,如果放弃,凉州必定会成为胡人作乱、威胁朝廷的心腹大患。灵帝听从了傅燮的意见,他派曾镇压黄巾军的将领皇甫嵩坐镇长安,出兵征讨叛军,董卓担任皇甫嵩的副手。皇甫嵩到任后,与叛军多次交战,只取得了一些小胜,四个月过后仍没能扭转局势。
朝廷的宦官们因为皇甫嵩之前不肯依附、讨好他们,就趁机和灵帝说皇甫嵩这么久没立功,浪费朝廷粮草,应该撤职。灵帝听信了宦官的谗言,召回了皇甫嵩,降低了他的官爵和薪俸,让司空张温、将领周慎等人负责平定叛乱,董卓归张温指挥。
张温在美阳(今陕西扶风)与北宫伯玉、边章、韩遂等人初次交战失利,双方陷入对峙状态。正当汉军一筹莫展时,一天晚上一颗巨大的流星划过了夜空。叛军多为羌人和胡人,比较在意天象,认为这是不祥之兆,从美阳撤军退往金城(今甘肃兰州)。董卓见叛军要走,趁机和另一路汉军发动了进攻。叛军在两路汉军的打击下,损失惨重。北宫伯玉等人率领残军逃出战场,退往了金城郡治所榆中。
董卓取胜后,张温立刻率军从美阳出发,直驱榆中。榆中是叛军的势力范围,汉军没想到叛军在榆中接应了大量援军,汉军深陷包围。六路汉军只有董卓一路突围成功,其他五路都损失惨重。张温只好班师回朝,后来被灵帝降职。
叛军原本可以趁机壮大势力,但很快发生了内讧。韩遂为了独揽大权,杀死了北宫伯玉、李文侯和边章,成为了叛军首领。当时曾在凉州刺史手下担任军官的马腾也起兵叛乱,拉起了一支队伍,他与韩遂联盟,杀死了凉州刺史。
当时凉州另一支实力更强大的叛军由狄道人(今甘肃临洮)王国率领。王国率军攻克了汉阳,杀死了汉阳太守,在叛军中声名鹊起。王国手下部队比韩遂多,而且他一分擅长指挥作战,韩遂和马腾将所率部队交给王国指挥,推举他为统帅。王国获得额外的兵力后,不久就率军包围了陈仓(今陕西宝鸡东)。陈仓是长安门户,灵帝为了解陈仓之围,再次起用派皇甫嵩和董卓率军与王国的叛军作战。
汉军向陈仓行军时,董卓提议加快行军速度去打叛军,但皇甫嵩却要慢慢行军,说是要以逸待劳,等叛军久攻不下、没了气势就好打了。皇甫嵩是主帅,董卓只好听从他的意见。王国围攻陈仓八十多天,一直没能打下,果然士气消沉了不少,于是撤除了包围。皇甫嵩趁机对叛军发起猛烈进攻,大败敌军,斩首数万人。
王国战败后逃离了战场,但他的统帅地位被韩遂和马腾废黜了,不久就因病去世。叛军内部也分裂成了三股力量,除了韩遂和马腾,还有早期跟随韩遂参与叛乱的将领宋建。
灵帝去世后,朝廷陷入动乱,已无法掌控中央的军事力量。后来董卓部将李催、郭汜掌控朝廷时,任韩遂、马腾为镇西将军、征西将军,名义上结束了叛军与朝廷的对抗。
