Trong khoảng thời gian 3 tháng sau trận Sơn Tây, quân Pháp được tăng cường lên 16.000 người, trong đó khoảng một phần tư là lính tập, và 10 đội pháo thủ. Tướng Millot được cử lên thay Đô đốc Courbet vào tháng 2 năm 1884. Quân Pháp định đánh thành Hưng Hóa trước, nhưng do đường sông cạn nước, pháo thuyền và thuyền tiếp tế không lên được, nên quân Pháp phải chuyển hướng sang chuẩn bị tấn công Bắc Ninh. Quân Thanh cho rằng quân Pháp sẽ theo con đường cái quan đánh vào Bắc Ninh, nên tổ chức rất nhiều vị trí phòng thủ dọc theo hướng đó. Quân Pháp chia làm hai cánh, cánh thứ nhất do thiếu tướng Brière de l'Isle đem quân qua sông Hồng, rồi theo sông Đuống (sông Thiên Đức) đi về phía đông. Cánh quân của thiếu tướng De Négrier ở Hải Dương, đi tàu đến Phả Lại lên bộ, sau khi hội quân với thiếu tướng Brière de l'Isle, cả thủy bộ theo sông Cầu (sông Nguyệt Đức) tiến đánh Bắc Ninh.