清泰初,潞王李从珂即帝位,是为后唐末帝。河东节度使石敬瑭与潞王素来不合,见其称帝,疑忌加深,遂寻机图谋叛唐自立。三年五月,末帝恐石敬瑭联合契丹谋反,命其徙镇郓州(今山东东平西北)。石敬瑭拒命,借端起兵晋阳(今太原南晋源镇)反唐。
末帝即以武宁节度使张敬达为太原四面兵马都部署、知太原行府事,统率代州(今山西代县)、义武(今河北定州)、河阳(今河南孟县)等镇兵6万趋晋阳征讨。二十日,军抵晋安寨(今太原晋祠南)掘壕立营,于晋阳城西北依山列阵,企图长围久困,待机破城。石敬瑭知寡不敌众,遣使间道赴契丹,愿以父礼事之,乞求援兵。约事成后献卢龙一道及雁门关以北诸州(即燕云十六州,今北京至山西大同地区),得契丹太宗耶律德光应许。
八月,末帝闻知契丹答应增援石敬瑭,屡督张敬达急攻。石敬瑭恃城坚粮足,闭城不出,固守待援。九月,耶律德光得知后唐军末扼守雁门诸险,亲率骑兵5万,号30万自代州西南扬武谷南下,长驱直入,径抵晋阳附近之虎北口。以诱敌入伏之策,将主力埋伏汾水弯曲处,遣轻骑3000向后唐军挑战,佯作败退。张敬达等率步骑贸然追击,至汾曲步兵涉水循北岸进,中伏大败,损师近万人,骑兵随张敬达退保晋安寨。契丹军乘胜推进至柳林(今太原东南),与石敬瑭会师于晋安寨南,占据要地,掘堑筑垒,将张敬达5万兵围于寨中。末帝闻讯,急令彰圣都指挥使符彦饶率军屯河阳,天雄军节度使范延光率军趋榆次(治今山西榆次),卢龙节度使赵德钧率军出代州,耀州防御使潘环率兵出慈州(治吉昌,今山西吉县)、隰州(治隰川,今山西隰县),末帝自率亲军3万从洛阳北上,共救张敬达军。
二十三日,末帝至河阳,命枢密使、随驾诸军都部署赵延寿率兵2万疾趋潞州(治上党,今山西长治)督战。随后,又命赵德钧为诸道行营都统,以赵延寿、范延光为河东道南面、东南面行营招讨使,犄角合势,解晋安寨之围。十一月初六,赵延寿引兵至西汤(今山西沁县西北西汤镇)与其父赵德钧会合,父子同谋欲趁国危自立,进至团柏谷(今山西祁县东南),按兵观变,逗留不进。十二日,契丹帝册立石敬瑭为大晋皇帝;闰十一月,晋安寨已被围数月,粮断援绝,多次突围未果,军心动摇,副招讨使杨光远杀张敬达出降。石敬瑭遂与耶律德光挥师南下,十二日至团柏谷。后唐救援军未战先遁,自相践踏,死伤万计,逃至潞州被迫及,赵德钧父子降契丹。耶律德光留主力驻潞州,遣太相高模翰率5000骑兵卫送石敬瑭南下,至河阳,在降将接应下渡河。末帝退回洛阳自焚。石敬瑭入洛阳,用后晋取代后唐。
此战,后唐军只顾重兵围城,未能有效地阻截契丹军的增援,导致战败被围;后唐援军诸将各怀异志,不战而降,终被逐个击破。