兴元元年七月,因泾原之战出走的
李适几经辗转终于回到京城
长安。叛将李怀光谢罪,被谅解。朝廷派给事中
孔巢父等持诏慰喻河中。由于孔巢父等轻躁被杀,李怀光又治兵反叛朝廷。德宗命待中
浑瑊为河中节度副元帅,领兵讨伐怀光。浑重新占领
大荔县(治冯,今陕西大荔)后,几次与李怀光交锋都为其所败,不能前进。当时,许多朝臣建议赦怀光罪,德宗不许。又任命河东节度使马燧为副元帅,与浑瑊及镇国节度
李元谅,宁节度韩游、坊节度使
唐朝臣等会兵同讨怀光。为了分化这支数万人的河中军,在官军颁发冬衣时,朝廷特意指示,
朔方郡及诸军在怀光所属的士兵,冬衣及赏钱皆当另外贮放,待道路稍通,及时发放。
马燧率步骑3万人攻拔州(治
正平,今山西新绛),随后又分兵攻取
闻喜县、万泉、
虞乡镇、
永乐、猗氏地,在
陶城(今
永济市西北)斩首万余级,与浑瑊军相会合,兵逼河中
李怀光大本营。
贞元元年四月,马燧、
浑瑊在
长春宫(今山西永济境)南大破李怀光军,并掘堑壕围宫城,怀光部将相继降唐,朝廷又任命马燧、浑瑊为招抚使。这时,
邻水县(治新平,今陕西彬县)韩游瓌率兵6000请示浑瑊,共同攻打
朝邑(今
大荔县东南
朝邑镇)。李怀光部将阎晏欲出战,其部下却因邻军是自己的亲人,不愿白刃相向,阎晏立即引兵退去。李怀光看到众心不从,便诈称要归顺唐廷,乘机聚集掠夺的财物,准备车马,扬言说待道路畅通后向朝廷进贡,这样延迟近一个月。当时,连年旱蝗灾害,官兵的物资粮食匮竭,又有些人建议赦免
李怀光。
李晟却陈述五点理由力主平叛到底。他还请求朝廷发兵2万,自备资粮,独讨怀光。七月初一,
马燧从前线回京建议除恶务尽,拨给官兵一月粮,必定歼敌。得到德宗批准。八月初二,德宗罢免子一切与打仗无关的费用,全力支持平叛。马燧回到前线行营后,当即与诸将商议攻打
长春宫,并亲自深入宫城下,向守将徐庭光喊话策反,并要求他们坚守不要出击。初十,马燧、
浑瑊、韩游瓌三支主力近逼河中焦篱堡(位于河中府河西县西),守将尉硅率700人投降。这天夜晚,
李怀光举火联络,诸营不予响应。
马燧亲自到长春宫下招降守将徐庭光。
马燧率诸军到河西(今陕西合阳东),河中军士惊慌,怀光无法控制局势,自缢身亡。
朔方郡将牛名俊砍断李怀光首级出城投降。这时河中兵还有1.6万人,马燧斩杀了阎晏等七名首要犯,其余皆不问罪,叛乱被平定。
在此过程中,
李晟的坚决态度和策略对平叛起到了关键作用,他提出的五点理由成为了德宗坚持平叛的重要依据。此外,守将尉的投降也是河中之战的转折点之一。