16日,杜聿明召开第五军团长以上军事会议,布置对昆仑关的攻坚战。他制定“关门打虎"的包围全歼战术,以戴安澜师和郑洞国师正面主攻昆仑关;邱清泉师为右翼迂回部队,从小路绕过昆仑关,攻占五塘和六塘,打击南宁方面的日本援军;第二百师副师长彭璧生率领两个补充团,担任左翼迂回支队,绕过甘棠和长安,攻击七塘和八塘,侧击昆仑关之外,堵住日军退路,阻击日军援兵。
昆仑关守敌为今村师团主力中村正雄第二十一旅团的松本总三郎大队。日军第四十二联队和第二十一联队部署在九塘至南宁一线。中日两军最精锐的部队在昆仑关碰撞了。今村均的轻敌,再次帮助了中国军队。他在同一天命令及川原七的第九旅团的几千名日军奔袭龙州和镇南关,这支部队于17日出发,而中国军队总攻击时间定在18日拂晓。
18日凌晨,战斗打响。第五军的重炮团以及各师炮兵营同时开火。日军炮兵还击,上百架飞机在中国军人头顶轰炸。炮火延伸后,戴安澜师与郑洞国师开始攻坚,打到夜晚,郑洞国师攻占了昆仑关附近的仙女山、老毛岭、万福村、罗塘和四一一高地;戴安澜师攻占了六五三和六○○两个高地。昆仑关主阵地易手。
19日中午,日军出动飞机狂轰滥炸,中村旅团三木联队再次夺取昆仑关。其他阵地得而复失、失而复得,两军激烈争夺。邱清泉师右翼迂回部队占领五塘和六塘,其中五塘又被日军夺去。日军盐田定一的台湾混成旅团被邱清泉率领主力堵在六塘激战。郑洞国派郑庭笈的第三团从右翼包围九塘,利用黑夜攻占了九塘西侧的高地。
20日,昆仑关的日军阵地渐渐动摇,频频告急。今村均命令中村正雄率领坂田第四十二联队增援昆仑关,也被邱清泉的部队堵在九塘,激战两天不能前进,直到22日拂晓才抵达七塘,又被阻截。中村本人第二天上午受伤。下午1点半,三木联队从昆仑关告急:"黄昏前旅团如不能到来,第一线难以确保。"
另一方面,盐田旅团两个联队在邕钦路上被第一七五师各部阻击,不能及时赶到昆仑关。第一联队被巢威的第五二四团堵在陆屋,激战三天不能通过,渡边大佐被击毙,残部逃回钦县。
20日,今村命令奔袭龙州和镇南关的及川旅团分出第三大队,乘坐汽车返回,驰援昆仑关。
蒋介石对昆仑关战役和整个桂南会战进展缓慢极为不满,下令给桂林行营及各参战部队:“前方各部队与炮兵等,如有不积极努力进攻,或不能如限期达成任务者,应即以畏敌论罪,就地处置可也。”
蒋介石发出如此严厉的命令,是因为守军的一些失误。西路军黎行恕师发起高峰隘战斗后,占领了附近山头,但当晚就被日军偷袭,第二天失守,败退到葛圩一带。白崇禧到前线督战,部队也无法重占高峰隘,致使阻击日军援兵的初衷无法实现。
另外,第一三一师在西长圩截击邕龙路的日军伊藤大队,今村均派出南宁仅有的两个中队和两个机枪小队前往援救,在苏圩附近遭到第一八八师阻击。第一三一师把伊藤大队围了整整三天,却不敢近战,致使这支日军在飞机掩护下,突围返回南宁。
24日,今村均命令及川旅团返回南宁,日军撤离龙州和镇南关。白崇禧得知第一批回窜的日军逃脱,第二批正在返回,惟恐他们增援昆仑关,便给韦云菘发出急电:“如再放过第二批回窜的敌军,影响主力兵团方面的战局,该副总司令应受严惩。”但是,地方部队为了保存实力,互相推委,日军主力仍然逃脱了。
冯璜在接任第一七五师师长时,白崇禧对他有过交代:“现在大敌当前,第十六集团军各部队长官间还闹意见,你见到他们时,传达我的意思,请他们以大局为重,放弃成见,共同抗日。”而夏威却对冯璜说:“抗战是相当长期的,不可把本钱一下赌光。”
在昆仑关主攻阵地上,郑庭笈的迂回部队立了大功。他从望远镜里发现,九塘公路边的大草地上,有日本军官在集合开会,马上命令第一营用轻重机枪和迫击炮集中火力猛击。炮弹击中目标,日本军官死伤惨重,不得不空投军官来补充作战。中村正雄少将就是被炮火击中在24日身亡的,只是无法明证是被哪一次炮火所击毙。
中国军队第二次夺回昆仑关阵地。但不久又被日军夺走。
到23日,仅杜聿明军正面进攻的两个师,伤亡就达两千多人,日军伤亡也在一千人以上。六天激战,战果并不理想,而日军援兵已从各地开来,形势急迫。杜聿明分析,昆仑关之所以两得两失,是因为日军在关口两侧有坚固的堡垒工事,组成交叉火力网,致使攻击部队失败。他决定改变战法,集中优势兵力,从外围攻击各个据点,逐渐缩小包围圈。
25日,郑洞国师第二团在团长汪波率领下,步炮协作,攻下罗塘南高地,全歼日军两百多人。这是很重要的突破,杜聿明传令嘉奖。接着,各师和各团军心振奋,依次攻克昆仑关周边的各个高地。
同一天,日军盐田旅团的两个联队到达八塘,中村旅团的坂田联队到达九塘。中村被击毙后,坂田联队长代理旅团长。
这时候,杜聿明提出集中全部兵力,一举歼灭这个旅团。白崇禧批准了他的计划。杜聿明调回第五军全部兵力,猛攻昆仑关,还把叶肇集团军的第六十六军和总预备队傅仲芳军的两个师,全部用于打击八塘以南的日军援兵。