在李雄在成都称王的同一年(公元304年),北方的匈奴贵族刘渊也反晋独立,自称汉王。
自从西汉末年起,有一部分匈奴人聚集居住在北方边远郡县,他们和汉族人相处久了,接受了汉族的文化。匈奴贵族认为上代多次跟汉朝和亲,是汉朝皇室的亲戚,之后就改用汉天子的姓——刘。曹操统一北方后,把匈奴三万个部落分为五个部,每个部都设部帅,匈奴贵族刘豹是其中一部的部帅。
刘渊是刘豹的儿子,从小读了许多汉族人的书,力气大,武艺高,能够拉三百斤重的大弓。刘豹死后,刘渊承当他父亲(father)的职位。之后,在西晋的成都王司马颖(八王之一)部下当将军,留在邺城,专管五部匈奴军队。
八王混战开始后,匈奴部落里一些贵族们在左国城(今山西离石北)开会商量。有个老年贵族说:“我们匈奴从汉朝开始跟汉人结为兄弟。经过魏、晋两个朝代,匈奴单于儿女虽然有封号,却没有自己的尺寸土地,跟一般百姓没有什么两样。现在晋朝发生内乱,自相残杀。这正是我们匈奴人规复地位的好时机啊!”
大家都觉得他的念头对,叫谁来带头呢?大家一议论,认为刘渊有才能,威望高,推他当单于挺符合。
贵族们派个使者到邺城,把大伙儿的意思通知刘渊,请他返来。刘渊很高兴,就借口要回匈奴葬自己的父亲,向司马颖请假。司马颖不赞成,刘渊只好让使者先回去,而且要五部匈奴集结兵力,向南移动。
之后,晋朝的并州刺史司马腾、将军王浚联络鲜卑贵族攻打司马颖,司马颖失败了,逃往洛阳。刘渊向司马颖要求回去带匈奴兵马来助战,司马颖才让他走了。
公元304年,刘渊回到左国城,大伙儿拥戴他做大单于。他聚集了五万人马,亲自率领南下,帮助晋军攻打鲜卑兵。有人问他,为什么不趁这个机会把晋朝灭掉,反倒去帮助晋军呢?
刘渊说:“要灭掉晋朝,还不是像摧枯拉朽一样轻易,但是晋朝的百姓未必会向着我们。我看汉朝立国的年代最长,在百姓中影响大。我们的上代又是汉朝皇室的兄弟。现在汉朝亡了,我们用承当汉朝的名义,也许可以得民心。”
大家听了,觉得是一个好念头。刘渊就宣布自己是汉王。
刘渊称汉王后,很快攻下了上党、太原、河东、平原等几个郡,势力越来越大。一些势力比较小的各族反晋力量也都来归附刘渊。
公元308年,刘渊称汉帝。第二年迁都平阳(今山西临汾西南),聚集兵力进攻洛阳。洛阳的老百姓虽然恨透腐朽的西晋王朝,但是也不愿受匈奴贵族的统治。所以刘渊两次进攻,都遭到洛阳军民的凶猛抵抗,迫不得已退兵。
那时候,八王中最终的一个王——东海王司马越还在和一批大臣相互仇杀。晋朝留下的一点点兵力也消费得差不多了。
之后刘渊死去,他儿子刘聪代替做汉国天子,又派大将刘曜、石勒进攻洛阳。洛阳的军民奋勇抵抗,但是毕竟势均力敌。公元311年,洛阳城终于被攻陷,晋怀帝做了俘虏。
刘聪进洛阳后,杀了大批晋朝的官员和百姓,有一次,刘聪举行宴会,让晋怀帝穿着奴仆穿的青衣给大家斟酒。一些晋朝的遗臣看了,禁不住失声痛哭。刘聪看晋朝遗臣还对怀帝这样有感情,一发狠,就把怀帝杀了。
晋怀帝死后,在长安的晋国官员拥立怀帝的侄儿司马邺承当皇位,这就是晋愍(音mǐn)帝。
公元316年,刘聪攻下长安。晋愍帝也遭到了怀帝同样的命运,在受尽欺侮后被杀。西晋王朝维持了五十二年,终于消亡。
西晋消亡过后,北方的各族人民(主要是匈奴、鲜卑、羯、氐、羌五个少数民族)纷纷起义,他们中心的上层分子乘机起兵,像李雄、刘渊一样创建政权,前前后后一共出现十六个割据政权,历史上称为“十六国”(旧称五胡十六国,胡是古时候对少数民族的泛称)。