Ngày 14 tháng 12, quân Pháp theo đường sông đánh vào bờ đê sông Hồng. Có ưu thế cả về quân số và hỏa lực, quân Pháp tấn công dữ dội và tới chiều đã chiếm được đê bối. Tới tối, quân Cờ đen mở một cuộc phản kích để chiếm lại đê, nhưng một phần nhờ trời sáng trăng, quân Pháp đẩy lùi cuộc tấn công đó. Trong suốt ngày hôm sau, quân Pháp củng cố các vị trí chiếm được, rồi chuyển pháo lên bắn vào thành từ sáng đến tối ngày 16, quân Cờ đen đánh lại rất quyết liệt. Trời sẩm tối, quân Pháp mở cuộc tiến công chiếm chiến lũy đối diện bờ đê thì phát hiện quân Cờ đen đã rút vào thành. Đêm đó quân Nam và quân Thanh rút chạy, quân Cờ đen cũng phải rút lui theo lên thành Hưng Hóa thuộc Hưng Hóa ở mạn ngược sông Hồng. Quân Pháp mất 83 người bị giết và 380 người bị thương. Về phía quân Cờ đen và quân Nam mất chừng một nghìn người. Đến thế kỷ 20, khi làm thủy lợi ở vùng này (trạm bơm Phù Sa (Sơn Tây)), người ta vẫn còn thu thập được hài cốt hàng trăm quân (Việt Nam và Trung Quốc) chết trận.