馬占山見狀,下令分出一個團迂回牡丹峰頂。士兵們借著炮火掩護,手腳并用地爬上陡峭的山坡,與日軍展開白刃戰。峰頂的日軍工事被攻克時,士兵們發現陣地上的重機槍手早已戰死,尸體仍死死抱著機槍。占據牡丹峰后,第五軍居高臨下掃射北門日軍,戰局瞬間逆轉。
8月17日黃昏,北門終于被攻破,第一師團第三聯隊傷亡過半,聯隊長森川伊三郎被飛熊坦克的主炮轟成了碎塊,殘部向總督府方向潰退。
東門的戰斗從一開始就陷入了泥潭。8月15日清晨,第六軍劉伯昭部剛踏進東門外側的灘涂,就接連響起地雷爆炸聲。日軍獨立第四旅團把這片大同江支流沖刷出的灘涂變成了死亡陷阱,爛泥里插著削尖的竹樁,水下埋著地雷,瑞氣山的山洞里,反坦克炮正盯著江面。
“派工兵排探路,火焰噴射器手跟上!”劉伯昭趴在一處土坡后,看著士兵們在灘涂中接連倒下,心如同被烈火灼燒。工兵們背著探雷器,在齊膝的泥水里艱難挪動,每前進一步都要耗費巨大的力氣。一名工兵剛標出一處雷區,就被山洞里的冷槍擊中,身體緩緩沉入爛泥,只留下一道暗紅色的痕跡。
裝甲軍第二旅的東北虎坦克根本無法在灘涂中行駛,商少業只得下令坦克在灘涂邊緣掩護,讓步兵先搶占綾羅島。綾羅島是大同江中的江心島,連接著東岸與西岸的兩座橋梁,拿下這里,就能切斷東門日軍的補給。東北軍士兵乘著橡皮艇,冒著日軍的炮火橫渡江面,不少橡皮艇被炮彈擊中,士兵們慘叫著沉入江底,江水很快被染成了紅色。
8月18日,第六軍終于攻占綾羅島。日軍獨立第四旅團退到東岸城區,把民房改成堡壘,街道上堆滿雜物,阻礙坦克推進。一輛東北虎坦克沖進一條小巷,剛轉過拐角就被日軍的炸藥包擊中履帶,車內乘員剛打開艙門,就被屋頂扔下的手榴彈炸死。劉伯昭見狀,下令步兵逐屋清剿,每一棟房屋都要經過慘烈爭奪。一名火焰噴射器手被日軍子彈擊中大腿,他拖著傷腿爬到一棟民房門口,對著窗戶扣動扳機,烈火噴涌而出,里面傳來日軍凄厲的慘叫,而他自己也被身后的日軍擊穿了胸膛。
經過五天拉鋸,第六軍付出兩千余人傷亡的代價,終于攻破東門。但獨立第四旅團的殘部仍在瑞氣山的山洞里負隅頑抗,直到8月20日,士兵們點燃柴草,用濃煙把洞里的日軍逼出來,這場東門之戰才真正落幕。
西門的普通江水位雖淺,卻成了東北軍的噩夢。8月15日,歐震的第七軍剛抵達普通江西岸,就遭遇了本多支隊與神原支隊的猛烈阻擊。日軍在江對岸的蒼光山挖了三層戰壕,普通江上的鐵橋被綁滿炸藥,江邊的玉流館被改成了指揮部,窗口架著多挺重機槍。