公元一二一七年八月,木华黎率领大蒙古国第四路军十万余人马,向忻州开进。
中都距忻州一千余里,木华黎大军行军十余日后,来到忻州,于石抹明安所部合军一处,兵马增至将近二十万。在等木华黎大军到来之前,石抹明安还命人打造了上百辆重兵器车。
木华黎大军在忻州休整五日后,继续南下向太原府开进。
而此时的郭文振也聚兵愈十万之众,并也打造了大量重兵器车,修缮了防御工事。
不过郭文振不愿被围而战,而是主动出击,他亲率七万人马和一百辆重兵器车布防于汾河南岸,摧毁所有桥梁,严阵以待木华黎大军到来。
金军在汾河刚好完成布防,木华黎大军就开到汾河北岸。汾河水面并不宽,最宽处最多两里,最窄处仅有半里。
木华黎一边指挥大军使用重兵器车攻击汾河对面的金军,一边让石抹明安带人沿汾河岸边收集船支。
木华黎大军不断使用重兵器车放长箭、抛石块攻击金军,郭文振也指挥金军使用重兵器车反击,双方均有伤亡。
三日后,石抹明安已经收集船支百余艘。木华黎即命令全军在重兵器车的掩护下,强行渡河。
此时汾河南岸,七万金军已被木华黎大军的重兵器车攻击的不敢靠近岸边,乘坐船支的蒙军纷纷上岸,向金军发起进攻。郭文振见蒙军步兵上岸,便指挥金军冲上去阻击。但随着上岸的蒙军越来越多,金军渐渐处于下风。
战斗持续三天三夜,二十万蒙军全部上岸,不断向金军发起进攻。金军抵挡不住,只得纷纷后撤。
太原府城墙有南北两门,北门守城将士看到郭文振率军回撤,赶紧打开城门,放郭文振等人入城。过了一会儿,蒙军也杀到城下。守城将士还没有等到金军全部撤回城里,就赶紧关闭城门,没有入城的金军只得向南逃窜。
郭文振逃回城内,经清点人数,只有不到五万人马逃回城内,有两万余人战死或者向南逃去。
此时木华黎率领将近二十万蒙军追至太原府北门城下,又开始使用重兵器车攻城。郭文振也率领八万金军进行了顽强的抵抗。
在外征战一年有余的的木华黎大军此时也是十分疲惫。木华黎命令大军将太原府城团团包围,一边继续攻城,一边进行休整。
木华黎又派出一支三万人马的偏师,先后夺取太原府周围的交城、寿阳、榆次、文水、祁县、太谷、盂县等城池。
在木华黎大军到来之前,郭文振已经上表给金国朝廷,请求增兵太原。
为了增援太原,完颜珣下旨,命令平阳知府胡天作、隆德知府完颜开分别率领所部三万人马,从平阳和隆德北上,互为犄角,共解太原之围。
胡天作,金国西京路管州人。自幼习武,青年时期即加入金军,以乡兵身份守御管州,后因累功升任少中大夫、管州刺史等职。蒙古大军入侵山西后,金国朝廷封其为“平阳公”、平阳知府,命其镇守山西西南各地。
胡天作率领三万人马从平阳府出发,进入太原境内,攻打木华黎大军占领的县城,因为这些城池在木华黎大军打下来后,并没有派兵驻守。胡天作所部很快就收复了太原以西各个县城,然后驻扎于太原以西二百里处的交城休整。
木华黎久攻太原不下,为引郭文振出击,佯装一副要撤军的模样。郭文振误听哨探之言,做出了木华黎将要全线撤军的误判,便催促胡天作所部前来太原汇合,一起进攻木华黎大军。