1915年,袁世凯图谋复辟,蔡锷潜回云南,与唐继尧、李烈钧等人组织护国军,发动护国战争。
护国军前锋抵达泸州对岸的蓝田坝一带时,张敬尧带领的北洋军已先期进入泸州,加上泸州原有的兵力,北洋军在泸州的总兵力达1.5万人,装备优良,战斗力较强。而蔡锷所率领的滇军仅3000多人,加上起义部队和义勇军,总人数为5000多人。战斗打响后,北洋军依仗优势兵力和早有准备,大举向护国军进攻。
蔡锷抱病赶到纳溪,亲自指挥战斗,护国军英勇作战,双方展开激烈争夺,叙府、纳溪周边阵地几次易手。
护国军部队经连续作战,也已极度疲劳。蔡锷于1916年3月4日命令各部队撤出纳溪及其周边地区,向永宁方向徐徐撤退。袁世凯的四川将军陈宧和张敬尧慑于蔡锷的足智多谋,在护国军撤退时,不敢发兵追击,反而致电北京的冯国璋说: “滇军虽暂退,官兵勇敢过人,蔡松坡用兵如神,地方多乐与相助,终不可侮……请公速电袁总统先行停战议和。”
护国军移至大洲驿、叙蓬溪一带后,蔡锷立即召开会议,要大家“整顿队伍,补充军需,休养兵力,一面详侦地势敌情,伺机行动”。
经过短期的休整,护国军各部队的建制和兵源都作了调整,力量有所增强。3月10日,广西督军陆荣廷宣布加入护国军阵营的消息传来,蔡锷立即向将领们宣布这一消息,并部署反攻事宜。
蔡锷经过慎重考虑,于3月17日正式下令:“我军于明日以主力自白节滩方面攻击前进。”他决定采用避实击虚、迂回包抄的战术,对北洋军的正面只配备少数兵力,拖住敌人,主力绕道击其侧后,发动奇袭。据此,蔡锷命令:“以右翼的赵又新梯团作为主攻部队,自白节滩出发、经双合场进攻纳溪敌主力之侧背;中路顾品珍梯团作为助攻部队,以顾军一部从渠坝驿出发、沿永宁河而下,直攻纳溪正面。朱德、张煦两支队从侧翼向蓝田坝迂回前进;左翼以刘存厚所部军队进扎牛滚场、和丰、底棚一带,警戒和威慑江安之敌,掩护主力进攻纳溪。”
3月17日,在蔡锷的亲自指挥下,护国军各部按照既定部署发起总攻。当时,北洋军在广西独立和全国反袁声势高涨的政治形势威慑之下,士气低落,前线官兵只是修筑工事,消极防御。3月17日当晚,顾品珍率所部两个支队绕道前进,秘密开至茶塘子村一带的北洋军工事前。深夜,护国军奋勇队悄悄摸上北洋军阵地,消灭了机枪阵地上的北洋军哨兵,同时将机枪调转枪口,对准睡梦中的北洋军官兵进行猛烈射击。正面部队听到奋勇队已然得手,于是立即向茶塘子村的北洋军发起猛攻。北洋军慌忙迎战,很快被击毙数百人,残部纷纷向后逃命,但由于夜黑路险,在护国军的追击下,坠落山谷者不计其数。中路军迅速攻占茶塘子一带高地,并于19日乘胜追击,占领金盘山,20日拂晓突袭鹞子岩。与此同时,左、右两翼的护国军也一起出动,很快获得胜利,并缴获了北洋军阵地上的全部重武器和弹药。经此一战,护国军士气大振。在蔡锷的指挥下,护国军于3月19日全线突破北洋军阵地,21日占领龙头铺等地,朱德支队则直插川南北洋军的大本营泸州,连下江安、南溪等地,又重新夺回纳溪县县城。短短几天之内,蔡锷指挥护国军以少胜多,打死打伤袁军400多人,缴获枪、炮、弹药及其他战利品无数,基本肃清了泸州、纳溪一带的北洋军。陈宧、张敬尧深感已经无力再战,于是马上写信给蔡锷,表示愿意“去逆效顺,请求停战”,并说“决不为项城(袁世凯)一人争总统”。不久,蔡锷在大洲驿司令部接待了前来求和的北洋军使者。