西晋占田制明确规定了他们的租调负担。汉族的官僚、地主多以少数民族人为奴婢、佃客。残酷的民族压迫,使各少数民族对西晋统治者“怨恨之气,毒于骨髓”,因而反抗不断地发生。
对西晋首先发难的是氐族——李特流民起义和羯、羌的小规模反抗,然后是匈奴贵族刘渊的起兵。八王之乱中,并州刺史司马腾与将军王浚联合鲜卑贵族进攻司马颖驻守的邺城,司马颖不敌,刘渊献计说要回匈奴召集骑兵抗衡鲜卑人,司马颍同意。刘渊得以回到匈奴。
永兴元年(公元304年),刘渊返回匈奴控制下的左国城,与匈奴权贵密谋起兵。刘渊的从祖父刘宣发表了起兵宣言,实际是要夺取中原。
当时,并州境内的汉人大多因战祸而迁徙南下,胡汉势力对比发生重大变化,而并州的官吏们还在热心内争。于是,刘渊称汉王,置百官,打败司马腾,招降山东起义的王弥等人,形成了反晋浪潮。
永嘉二年(公元308年)刘渊称帝,都平阳。他分别于永嘉三年(公元309年)秋冬遣其子大将军刘聪率石勒、刘曜等进攻洛阳,西晋军队顽强抵抗,匈奴败退。后刘渊死,刘聪杀兄自立,又于永嘉四年(公元310年)冬三攻洛阳。
永嘉五年(公元311年),西晋专政的太傅东海王司马越病死,匈奴大军第三次围攻洛阳,而南方诸州的牧丞或拥兵观望或象征性的出兵“勤王”。王敦天天召集士族饮酒作乐;王澄带兵从荆州出发,以极慢地速度到了南阳,一听荆州刺史山简的军队战败,就跑回去了。而王衍等人率十几万大军公开逃跑。结果他们被石勒在苦县全歼。七月,洛阳失守,晋怀帝被俘,接着汉国大将石勒闪击荀唏,青兖沦陷。
建兴元年(公元313年),晋怀帝在平阳遇害,晋愍帝在长安继位,下令司马睿、刘琨等的共七十万大军分三路合击平阳。结果身为此战主力的司马睿在士族的鼓动下竟抗命不遵。
建兴四年(公元316年)长安失守,西晋灭亡。而匈奴控制了几乎整个中原,长达一百多年的大动乱开始。而后,各族陆续在北方建立国家,史称“五胡十六国”。
不久,完全代表士族利益的东晋建立。西晋亡后,在北方尚有三个忠于晋朝的地区,即并州北部刘琨、幽州段匹磾、凉州张寔。然而,并州刘琨先被石勒击溃,投靠幽州段匹磾。段匹磾则奉东晋密令将刘琨处死,之后段匹磾也被石勒击败。最后,在凉州张寔去世之后,其弟张茂向前赵的刘曜称臣。至此东晋在华北的势力全部消灭。