“安史之乱”爆发后,李光弼在郭子仪的举荐下担任河东节度副使,率兵先后打败常山、九门等地的叛军,并与郭子仪共同在嘉山大败史思明部队。后来,长安失守,李光弼率军驻守太原。
当时,叛将史思明从博陵发兵,蔡希德从太行发兵,高秀岩从大同发兵,牛廷介从范阳发兵,四路大军共计十万余人,气势汹汹地向太原攻来。李光弼手下的精兵强将都前往北方支援,守城的士兵只有不到一万人,而且还都是些没有经过仔细操练的新兵。史思明认为太原兵力弱,简直是唾手可得,如果能拿下太原,自己的大军就可以长驱直入,直取北方。
太原城中的将士都十分害怕,紧急商议如何修缮城防,以抵御敌人。李光弼却不赞同,他说:“太原城城墙的总周长有四十多里,如果在叛军即刻到来的时候开始修缮城防,等敌人来了,我们哪里还有力气去打仗?”众将于是只等李光弼做决断。李光弼率领士兵和城中百姓在城外开凿壕沟,并让军民做了数十万块砖坯,大家都不知道他到底有何用意。后来,叛军兵临城下,开始攻城,李光弼就命令兵士们用砖坯将城墙加高,一旦有地方被损毁,就立刻用砖坯修补好。史思明见难以攻下太原城,就派人去崤山以东取攻城的器械,并让三千胡兵护送。李光弼知道后便遣兵将前去阻截,将胡兵尽数杀死。
敌人一开始攻得极为凶猛,李光弼就做了大炮,以巨石为炮弹,一发射出去就能打死二十多个敌人。叛军在攻城战中死伤将近十分之二三的兵力,于是后撤,在离城数十步以外的地方安营扎寨,将太原城团团围住,想要把官军困死。李光弼又生妙计,派人前去诈降,假意与叛军约定好出城投降的日子,叛军觉得可以不战而胜,自然非常高兴,根本不加防备。李光弼趁叛军守卫松懈之机,在他们的营地周围挖掘地道,之后用木头顶住,到了和叛军约定好投降的那一天,他派手下的将领带着几千人出城,假装投降,而自己率领士兵站在城墙上。叛军都将注意力放在将要投降的将士身上,突然自己军营的地面塌陷,一下子就死了一千多人,叛军顿时大乱。此时,李光弼命令将士高声呐喊着冲杀过去,杀死并俘虏叛军一万多人。
史思明围攻一个多月都没有攻下太原,于是决定改变攻城策略,挑选了一批骁勇善战的精兵,作为流动作战军队,给他们分派了一个特殊的任务:“当我率大军攻打太原城城北时,你们就暗暗前往城南;我攻打城东时,你们就暗暗前往城西,一旦发现有机可乘就赶紧进攻。”史思明万万没有料到,李光弼治军严明,即使是叛军没有攻打的地方,那些巡逻的士兵也会打起精神,万分警惕,所以史思明的这条“妙计”根本派不上用场。
李光弼不但很会打仗,还很会用人。他在军中招募人才,即使是会一些小技艺的人也会被选中,之后再根据他们各自的能力分派岗位,可谓是物尽其用、人尽其才。那时,李光弼发现军中有三个会铸钱的工匠,而且这三人非常善于挖掘地道,于是命他们主持挖掘地道的工作。当叛军士兵在城下仰着头高声骂阵时,李光弼就派人从挖好的地道中抓住他们的脚,把他们拖到城里,然后押到城头斩杀,以至于那些叛军走路时都盯着地面,生怕突然被拖走杀掉。叛军用云梯和土山作为攻城器械大举攻打太原城,李光弼则用挖地道的方法来对付,让那些大型的攻城器械刚被运到城下就陷入地里不能移动。
安禄山自从作乱之后视力直线下降,后来基本看不清东西了,因而脾气越来越暴躁,经常拿身边的人出气,还总是想用小儿子取代长子安庆绪的位置,于是安庆绪收买了他的近侍,先下手杀掉了他。安禄山死后,其子安庆绪取而代之,并命令史思明回范阳,留下蔡希德等人继续围攻太原城。
李光弼见敌人兵力分散,便亲自率领敢死队出城袭击,大破蔡希德军,杀死叛军七万余人,蔡希德逃走,太原城终于转危为安。