匈奴人刘渊最先起兵反晋。他是匈奴的贵族。王浚、司马腾讨成都王颖时,颖以刘渊为北单于,参丞相军事,发匈奴人抗浚、腾军。刘渊遂起兵。旬日之间有众五万人。公元304年,刘渊即汉王位于左国城(今山西离石北)。刘渊称自己为汉王,是表明他是接续汉朝的帝统,要与晋争天下。刘渊在河北没有遇到有力的抵抗,很快就占领了并州(今山西省中部和南部)一带地方。
石勒是上党羯人。羯是附属于匈奴的一支。羯人高鼻深目多须,显然与匈奴不同族。石勒的父祖,都是部落小帅。他幼时作过商贩,作过田客。惠帝末年,并州荒歉,并州刺史东瀛公司马腾掠取胡人,“两胡一枷”卖到山东作奴隶,换取军粮。石勒年二十余,也被卖到茌平(今山东茌平南)师懽家为奴,从事耕种。后来,师懽放免他作田客。
怀帝永嘉三年(309年),刘渊派儿子刘聪两次进攻洛阳。永嘉四年,刘渊死,刘聪继位。这时洛阳周围地区或遭破坏,或为刘聪、石勒占领,洛阳饥困日甚。掌权的东海王越,眼看洛阳难守,遂以出讨石勒为名,率领仅有的一些军队和满朝文武公卿离开洛阳,东屯项。永嘉五年三月,司马越病死。石勒率骑追司马越军,在苦县宁平城(今安徽鹿南郸城东)大败晋兵。同年五月,刘聪攻陷洛阳,晋王公百官及百姓者三万多人。怀帝被虏到平阳。
怀帝被虏后,晋人立憨帝于长安。经过五年艰苦战斗,公元316年,刘聪遣刘曜攻长安,愍帝出降。晋朝在北方的政权垮台,西晋亡。怀、愍两帝在平阳受尽侮辱,最后都为刘聪所杀。