原大西军将领刘进忠叛变后,先在合州(今重庆合川区)同明军曾英勾结,后又出保宁(今四川阆中)去,投降了南下的清军统帅豪格。清军以刘进忠为向导,带领清军进入川北。清顺治三年(1646年)十一月二十六日,豪格派护军统领鳌拜等将领,分率八旗护军轻装疾进,出其不意,对农民军发起突然袭击。二十七日晨,清军隔太阳溪与张献忠的农民军相遇。面对这意外的突然来袭,张献忠临急应战,指挥农民军马步兵分两面抗击清军。这时,清军统帅豪格率大军继至,遣参领格布库等向农民军右翼进攻,都统准塔攻击农民军左翼。战斗打得非常激烈,清军将领格布库等被农民军击毙,农民军也遭到了惨重的损失。
张献忠“初不为备,闻兵至,犹以为他寇,身衣蟒半臂,腰插三矢,引牙将临河视之。”刘进忠为清将指点说:“此八大王也。”清将急发暗箭射之,张献忠不幸中箭。时年仅四十岁。
张献忠死后,他的部众“以锦褥裹尸,埋于僻处,而遁”。清军“求得发而斩之,枭其首于成都”。另据清靖远大将军和硕肃亲王豪格等奏报:“臣帅师于十一月二十六日至南部,侦得逆贼张献忠,列营西充县境,随令护军统领鳌拜等,分领八旗护军先发。臣统大军星夜兼程继进,于次日黎明抵西充。
献忠尽率马步贼兵拒师,鳌拜等奋击大破之,斩献于阵。”但是有良心的青年历史学家没有发现清军报告张献忠尸体的文件。
张献忠死后,他的部将孙可望、李定国、刘文秀、艾能奇、冯双礼等率领农民军向南,在重庆受到明军曾英部的阻击,农民军击毙守将曾英后,继续向贵州方向转移。后与南明联合,共同抗击清军,转战在西南各省的广大地区,坚持了近二十年,直到清朝的康熙初年。