西晋时期,大量游牧民族内迁,史称“五胡”,这些民族被世族收作奴婢。在八王之乱后,这些内迁的外来民族趁机举兵,造成五胡乱华的局面。晋王朝内部矛盾激化,宗室争权夺位,战祸连年,天灾不断,民众被迫沦为流民,反晋起义不断爆发。
元康二年,匈奴人郝散起兵反晋,响应者有数十万氐、羌民众,推举氐帅齐万年为帝。起义军攻打多个郡县,晋军屡败。后晋廷派积弩将军孟观率兵镇压,起义失败,齐万年被俘。此后,流民大起义此起彼伏。
巴蜀流民李特、李雄在益州领导秦、雍六郡流民起义,攻占广汉,进围成都。李特与蜀人约法三章,得到益州民众的支持。李特战死后,其弟李流和其子李雄继续统领义军,逐走晋益州刺史罗尚,攻下成都。李雄称成都王,后称帝,建立成汉政权。
荆州蛮民首领张昌在安陆聚众起义,荆地区的流民和逃避戍役的丁壮纷纷参加。张昌分兵四出攻城略地,其势力迅速扩大。同年七月,西晋荆州刺史刘弘调集大军围攻张昌,起义军被晋将陶侃率部击败。次年八月,张昌被俘杀。
雍州流民起义中,王如在宛县发动起义,聚至四五万人,于汉、沔及襄、阳一带屡败晋军。王如自称大将军,领司、雍二州牧。最后他被石勒击败,投降晋扬州刺史王敦后被杀。
杜弢在巴蜀领导流民起义自称梁、益二州牧,领湘州刺史。他攻占多个地区并屡败晋军。建兴三年晋琅玡王司马睿派大军围攻杜弢最终突围逃遁死于途中。
在北方中原爆发的多起民众起义中石勒和王弥领导的山东、河北起义影响最大。他们转战于今河北、山东、安徽、河南等地有众数万。永嘉二年五月王弥兵临洛阳使晋廷“京邑大震”。后被晋司徒王衍率大军击败。
这些起义事件加速了西晋的衰落和灭亡同时也反映了当时社会的深刻矛盾和民族关系的复杂性。