面对八路军抗日根据地的不断发展,日军制定了先平原后山区的战略,1938年11月,日军出动114师团和独立第3混成旅团3700余人,在东南西三个方向对八路军冀南抗日根据地进行扫荡,冀南的八路军在徐向前指挥下灵活应对,在16天作战28次,歼敌600多人,成功粉碎了日军的扫荡。而此时随着日军在正面战场上进攻的暂时停滞,蒋介石的小心思又动了起来,国民党军的部分顽固派也公然开始和八路军搞摩擦。面对日伪玩三面夹击的复杂形势,八路军总部命令刘伯承率领129师从太行出发前往冀南巩固抗日根据地。
129师于12月21日到达冀南,先与国民党的顽固派展开针锋相对的斗争,通过与鹿钟麟、石友三、张萌梧的谈判和警告,暂时遏制了他们摩擦的行为。之后,八路军开始集中定力应对日军对冀南地区的进攻。
对此,刘伯承决定,把129师主力与地方武装分成几个作战集团分区作战机动歼敌,并以小组部队与日军周旋展开游击战。各部均取得一定的战果,其中八路军386旅在旅长陈赓和政委王新亭的率领下,兵分两路在曲周、广平、肥乡、威县一带机动作战,共计消灭日军400人。但日军在平原地区仗着自己有汽车大炮依然十分狂妄,每次遭到八路军打击后必然会追着不放,对此,八路军决定利用日军这一心理,布下一个口袋阵,在平原地区打一个精彩的诱伏战。
经过反复考虑,八路军决定把伏击地点定在华北平原南部的威县,此地是日军后方补给线上的重要据点,由日军第10师团40联队一部防守。香城固,位于威县以南一条干涸的河道里,公路从河道里穿过,两边是大片的灌木丛,河道中的泥沙不利于日军的汽车行军。而且香城固此时还被八路军控制着,进可诱敌深入,退可固守后方的根据地。陈赓旅长当机立断,决心在此地伏击日军。把这里当成对日军的“杀猪场”。
随后陈赓迅速做出了兵力部署,386旅补充团位于香城固东边的庄头村一带,暂归129师指挥的115师688团1营担任正面阻击任务,其余部队位于西面的张家庄。386旅新1团位于香城固西北,切断敌人的退路,同时警戒曲周方向的日军增援部队,骑兵联和旅部侦察队向威县日军进行侦查,并负责引诱敌人。战斗的指挥交给了刚刚到任的386旅副旅长许世友。
2月7日至9日,八路军小股部队不断的袭击威县县城,甚至还搬出多架云梯摆出要攻城的样子,这惹怒了城里的日军。10日上午,日军出动40联队的补充大队以及安田加强中队,并携带1门山炮和2门九二式步兵炮,乘坐9辆汽车出城追击八路军。
见鱼上钩了,八路军开始按计划边打边撤且战且退,一步一步的把日军往埋伏圈里引,途中第什营村附近,日军追击部队遭到八路军骑兵连的袭击,补充大队的大队长被打伤,还打死了一个翻译官。这一下彻底激怒了日军,安田中队长接替大队长指挥,拼命追击骑兵连。就这样,日军一步一步的进了八路军在香城固安排的伏击圈。
等日军的汽车行进至香城固北街口时,正面抗击的八路军688团1营开火了,日军领头的汽车瞬间被打爆,车上的日军士兵也都被击毙,后面的日军急忙下车向南边的八路军阵地冲锋,但几次冲锋都没有效果。安田中队长遂改变战术,分出小股部队向庄头攻击,企图包抄八路军,但这批日军刚接近村子,就被八路军补充团打了回去。之后补充团也发起冲锋,将日军驱赶至沙河洼地。
安田知道中计了,他下令立即调转车头向北突围,但已经来不及了,许世友亲自率领386旅新1团将日军的退路堵上了,八路军其他部队也以猛烈的火力射击日军,将日军完全压制在洼地里,现在洼地里的汽车无法开动,被八路军用集束手榴弹炸毁。剩下的日军集中兵力对新1团发起了4次冲锋,都被八路军打退。甚至日军公然违反国际法,向新1团发射了毒气弹,不少战士中毒倒下,但新一团团长丁思林用手榴弹爆炸产生的气浪驱散毒气。同时,陈赓也命令各部快速压紧包围圈,战士们发起冲锋,与残存的日军展开肉搏。激战至夜幕降临,日军被全歼。安田中队长也被八路军骑兵排排长砍死。
这一战,八路军歼敌250人,俘虏8人,炸毁汽车9辆,缴获各种火炮4门,各种枪支数十支以及子弹3万多发,八路军仅伤亡50人,其中牺牲27人。这确实是一场精彩的平原伏击战,陈赓旅长称这场战斗是他进入平原第一次得意之作。战斗结束后,为防止日军报复,八路军趁夜迅速撤离香城固。
第二天,日军就出动2000余人以及70多辆汽车装甲车,并动用数架飞机掩护,四处寻找386旅报复。由于386旅在之前的战斗中多次给日军重创,日军的装甲车上甚至写着“专打386旅”,但日军一连折腾了7天都找不到386旅,随后只能灰溜溜的撤回去。而386旅则继续与敌人周旋,迎接着新的战斗。