Основываясь на своих точных наблюдениях, Курбэ выработал план действий и сообщил его своим командирам; он состоял в следующем.
На следующий день (23 августа), около 2 часов пополудни, с началом отлива суда должны были сниматься с якоря и держаться на месте самым малым ходом. По первому сигналу адмирала миноносцы должны были броситься на китайские крейсеры, стоявшие выше по течению. По второму сигналу эскадра должна была открыт огонь.
«Вольта» должен был поддерживать миноносцы и обстреливать военные джонки. Трем канонеркам следовало пройти под кормой «Вольты» и атаковать 3 канонерки и 3 авизо, стоявшие у арсенала. Три французских крейсера должны были действовать по трем ближайшим китайским авизо, находящимся на их левом траверзе, а «D'Estaing», стоявший крайним, должен был уничтожить неприятельские миноносцы.
Начало отлива было самым выгодным моментом для начала действий, так как большинство китайских судов становилось тогда кормой к французам, а три авизо, стоявшие ниже таможни, были бы достаточно заняты тремя большими крейсерами. Курбэ посчастливилось в том отношении, что, ставшие уже недоверчивыми, китайцы не использовали выгодное для них положение во время прилива, около 10 часов утра. Заблаговременно Курбэ навестил консулов и командиров военных судов о предстоящей атаке. В 10 часов утра было передано объявление войны вице-королю в Фучау.
В течение утра китайцы готовились к бою, что немало волновало адмирала, который приказал своим судам также приготовиться к бою, не возбуждая внимания китайцев. В половине второго пополудни, на обеих эскадрах прислуга стояла у орудий; через 15 минут все французские суда снялись с якоря. Китайцы немедленно последовали их примеру. Солнце страшно пекло, все замерло в тревожном ожидании – наступил решительный момент.
Вдруг одна из китайских миноносок бросается в атаку на «Вольту»; Курбэ приказывает поднять условленный сигнал, и оба французских миноносца дают полный ход вперед. В этот момент раздается преждевременный выстрел с марса одной из канонерок; этот случай заставляет Курбэ поднять второй сигнал, чтобы открыть огонь раньше китайцев, хотя он, собственно, хотел выждать результата атаки миноносцев.
Бой разгорается немедленно по всей линии. Через полминуты после первого выстрела раздается взрыв мины у ближайшего китайского крейсера «Yang-Woo», пущенной с французского миноносца, быстро прошедшего 500 метров, отделявших его от крейсера. Последний успел после взрыва выброситься на берег. В миноносец попал снаряд, повредивший котел, так что его понесло по течению; миноносец отдал якорь вблизи иностранных судов.
Атака второго миноносца на другой крейсер не удалась и его тоже понесло по течению. Вооруженные шестовыми минами баркасы немедленно бросаются в атаку на этот крейсер – «Foo-Sing», мина взрывается у его винта. Французы сделали попытку взять его на абордаж, но он был слишком поврежден и быстро затонул.
В этот момент раздаются выстрелы крупных орудий; это подходит броненосный корвет «Tiomphante» (6 орудий), снявшийся с якоря и прошедший через бар. «Вольта» громит правым бортом севшего на мель «Yang-Woo», а левым расстреливает военные джонки, отвечающие сильным ружейным огнем. Все три канонерки поднимаются вверх по реке. Вся линия окутана густым пороховым дымом, в котором три больших крейсера поддерживают правым бортом сильный огонь по береговым батареям, и левым – по неприятельским авизо. Через полчаса, в 2 часа 25 минут пополудни, бой окончен; пороховой дым медленно расходится.
Французские суда, за исключением миноносца NN 45, обошлись без серьезных повреждений. Китайская эскадра была уничтожена; военные джонки частью затонули, частью сгорели, команда их погибла. Подобная же участь постигла брандеры и две большие джонки с войсками. «Yang-Woo» был охвачен пожаром; транспорты, стоявшие у арсенала, были уничтожены, две маленькие канонерки выбросились выше по течению на берег. Обе канонерки типа «Альфа» получили в бою серьезные повреждения, их понесло вниз по реке, где они были уничтожены «Triomphante»; одна из них затонула. Три авизо, сражавшиеся с крейсерами, пытались уйти задним ходом, но, потерпев тяжелые аварии, сдрейфовали вниз по реке.
Через 7 минут, когда дым немного рассеялся, береговые батареи вновь открыли огонь, но к 5 часам и их заставили замолчать. В 3 часа дня на поверхности не было уже ни одного китайского судна; все они потонули, выбросились на берег или сгорели. В 5 часов французы стали на якорь вне досягаемости огня фортов; немедленно были отправлены вооруженные шлюпки для уничтожения китайских минных катеров, нашедших себе убежище за таможенными складами.
Всю ночь французам пришлось быть настороже, потому что китайцы пускали по течению брандеры. Большинству судов пришлось до четырех раз за ночь сниматься с якоря. В 9 часов прошел таким образом горящий транспорт, сопровождаемый двумя джонками; как эти, так и следующие брандеры были уничтожены. Китайцы потеряли 5 командиров, 39 офицеров и 2000 матросов и солдат; французы – только 6 человек убитыми и 25 ранеными.