公元一二一七年八月,木华黎率领大蒙古国第四路军十万余人马,向忻州开进。
中都距忻州一千余里,木华黎大军行军十余日后,来到忻州,于石抹明安所部合军一处,兵马增至将近二十万。在等木华黎大军到来之前,石抹明安还命人打造了上百辆重兵器车。
木华黎大军在忻州休整五日后,继续南下向太原府开进。
而此时的郭文振也聚兵愈十万之众,并也打造了大量重兵器车,修缮了防御工事。
不过郭文振不愿被围而战,而是主动出击,他亲率七万人马和一百辆重兵器车布防于汾河南岸,摧毁所有桥梁,严阵以待木华黎大军到来。
金军在汾河刚好完成布防,木华黎大军就开到汾河北岸。汾河水面并不宽,最宽处最多两里,最窄处仅有半里。
木华黎一边指挥大军使用重兵器车攻击汾河对面的金军,一边让石抹明安带人沿汾河岸边收集船支。
木华黎大军不断使用重兵器车放长箭、抛石块攻击金军,郭文振也指挥金军使用重兵器车反击,双方均有伤亡。
三日后,石抹明安已经收集船支百余艘。木华黎即命令全军在重兵器车的掩护下,强行渡河。
此时汾河南岸,七万金军已被木华黎大军的重兵器车攻击的不敢靠近岸边,乘坐船支的蒙军纷纷上岸,向金军发起进攻。郭文振见蒙军步兵上岸,便指挥金军冲上去阻击。但随着上岸的蒙军越来越多,金军渐渐处于下风。
战斗持续三天三夜,二十万蒙军全部上岸,不断向金军发起进攻。金军抵挡不住,只得纷纷后撤。
太原府城墙有南北两门,北门守城将士看到郭文振率军回撤,赶紧打开城门,放郭文振等人入城。过了一会儿,蒙军也杀到城下。守城将士还没有等到金军全部撤回城里,就赶紧关闭城门,没有入城的金军只得向南逃窜。
郭文振逃回城内,经清点人数,只有不到五万人马逃回城内,有两万余人战死或者向南逃去。
此时木华黎率领将近二十万蒙军追至太原府北门城下,又开始使用重兵器车攻城。郭文振也率领八万金军进行了顽强的抵抗。