至德二年(公元757年)正月,叛將史思明統率幾路兵馬,共10萬大軍,進攻太原。當時守衛太原的宰相李光弼,他的精兵都已經奔赴朔方,剩下的團練兵都是烏合之眾,而且連1萬人都不到。史思明認為攻取太原城易如反掌,打算攻克太原後,就立刻進軍,直接進攻朔方、河西、隴右。
李光弼像
太原城裏的將領十分懼怕,商議修葺城池等待叛軍,李光弼說:“太原城周圍40裏長,叛軍快要到來,卻大興勞役,並未見著敵人就先使自己疲憊不堪了。”
於是率領士兵與百姓在城牆外麵挖掘壕溝,加固城池。又讓士兵做了幾十萬塊磚坯,大家都不知道用來做什麽。等到叛軍在城外進攻,李光弼就讓士兵用磚坯加高城牆,有毀壞的地方立刻補修。
史思明派人到崤山以東取來攻城的器具令胡兵3000人護送,到達廣陽的時候,遭到別將慕容溢、張奉璋的伏擊、全軍覆沒。
史思明圍攻太原一個多月,都未攻下。於是挑選驍勇善戰的士兵為機動兵力,告誡他們說:“我進攻城北,你們就偷偷地到城南去;進攻城東,你們就到城西,伺機而動。”但是李光弼軍令嚴整,即使叛軍無從進攻,巡邏警戒也不曾鬆懈,叛軍根本無計可施。
李光弼在軍隊裏征募人才,隻要是有一技之長,都被選出來根據才能任用,人盡其才。
李光弼得到安邊軍的三個鑄錢的工匠,善於挖掘地道。叛軍士兵站在城下大聲叫罵,李光弼就派人從地道裏拉住他們的腳,拖入城中,在城牆上斬首。從此叛軍士兵走路的時候都得低頭看地。
叛軍又用雲梯和土山攻城,李光弼挖掘地道迎戰,這些攻城器具臨近城牆的時候全都陷入地中。
叛軍起初攻勢猛烈,李光弼做了大炮,發射大石頭,一發可以殺傷20多人。叛軍死了十之二三,於是把軍營後退了幾十步,但是對城的包圍卻更加嚴密。
李光弼又派人假裝與叛軍相約,定下日期出城投降,叛軍正求之不得,便無防備。李光弼讓士兵在叛軍的營地周圍挖掘地道,再用木頭將地麵撐住。
到了約好的日期,李光弼率領士兵站在城樓上,派遣裨將率領幾千人造成投降的假象,叛軍都在旁邊觀看。忽然營中地麵塌陷,死了1000多人,叛軍驚慌混亂,官軍乘機擂鼓呐喊,出城襲擊,俘虜斬首了1萬多人。此時正好安祿山也死了,安慶緒命令史思明返回鎮守範陽,留下蔡希德等人繼續攻打太原。