汉赵政权两次进攻洛阳失败,遂调整策略。晋怀帝永嘉三年(309年),汉赵政权第二次撤兵前,王弥曾议亲自“在兖州、豫州之间招募兵士,收聚粮食”。于是,在刘聪等撤回平阳时,王弥则向南出兵。王弥出身世家大族,有号召力。在颍川、襄城、汝南、南阳、河南的流民几万家,一直被当地土着居民欺扰,纷纷放火烧城焚邑,杀掉郡守、长史等官员,响应王弥。
永嘉四年(310年),刘和接替刘渊为君,不久被其弟刘聪夺位。同时,由于王弥等切断粮道,洛阳发生饥荒。司马越派遣使者带着插羽毛的檄文征召全国军队,让他们来救援京城。怀帝对使者说:“替我告诉各征、镇,还可以援救,迟了就来不及了!”然而,征南将军山简的救兵被王如打败,荆州刺史王澄亲自带兵援助洛阳,闻讯而部众不战自溃,也只好回师,其他藩镇作壁上观,终究没有军队到达。晋廷商议,多数人想迁都逃难,王衍反对。这时,石勒已南下渡过黄河,屡屡取胜。司马越在朝中丧失人心,在外担忧石勒,于是请求亲自讨伐石勒,并且屯兵镇守在兖州、豫州。
永嘉四年(310年)十一月十五日,司马越率领四万兵士向许昌进发,除留下必要的监视力量外,几乎搬空了洛阳朝廷。宫廷缺少守卫,饥饿日益严重,宫殿中死人交相杂横,盗贼公然抢劫,各府、寺、营、署,都挖掘壕堑自卫。
晋怀帝永嘉五年(311年),刘聪派刘曜率兵四万攻洛阳。当时晋王朝仍处于内讧中,晋怀帝派苟曦讨东海王司马越,司马越病死。王衍决定秘不发丧,以襄阳王司马范为大将军统令其部,回到东海国安葬。四月,石勒率轻装骑兵追击太傅司马越的灵车,在苦县宁平城追上,把晋朝军队打得大败,又放开骑兵包围并用弓箭射击,十多万晋朝官兵互相践踏堆积如山,无一人幸免。太尉王衍、襄阳王司马范、武陵庄王司马澹、西河王司马喜、齐王司马超、吏部尚书刘望、廷尉诸葛铨、豫州刺史刘乔、太傅长史庾铨等人都被擒获。当夜,石勒派人推倒墙把这些人压死了。石勒又剖开司马越的灵柩,焚烧了司马越的尸体。
宁平城之战后,洛阳已岌岌可危。苟曦建议迁都,但群臣因贪