Kế hoạch rút quân của quân Nguyên
Vào năm 1287, nhà Nguyên mở đầu cuộc xâm lược Đại Việt lần thứ ba , nhưng chỉ chiếm được kinh thành Thăng Long không một bóng người, và thủy quân Đại Việt do Phó tướng Nhân Huệ Vương Trần Khánh Dư chỉ huy đã đánh tan nát đoàn thuyền lương của Trương Văn Hổ trong trận Vân Đồn.[1] Trước tình hình bất lợi, quân Nguyên định tổ chức rút về Trung Quốc theo nhiều hướng khác nhau. Ngày 3 tháng 3 năm Mậu Tí (1288), Hữu thừa Trình Bằng Phi, Thiên tỉnh Đạt Mộc thống lĩnh kị binh đi đón các cánh quân di chuyển bằng đường thủy (đoàn thuyền của Trương Văn Hổ). Tuy nhiên khi qua chợ Đông-Hồ thì bị dòng sông chắn ngang, phải quay lại, nhưng cầu cống đã bị quân nhà Trần bám theo sau phá hủy. Quân Nguyên rơi vào thế nguy, trước mặt thì bị quân Trần chận đường, sau lưng là chướng ngại thiên nhiên. Tuy nhiên quân Nguyên do tra hỏi những tù binh nên đã tìm được đường thoát, nửa đêm hôm đó cánh quân này đột phá vòng vây chạy trốn theo con đường khác, phối hợp với một cánh quân Nguyên đang rút lui để cùng nhau ra khỏi ải Nội Bàng. Tuy bị bất ngờ bởi sự thay đổi lộ trình của quân Nguyên, quân đội nhà Trần đuổi theo đánh rất sát vào cánh quân đoạn hậu. Tướng Nguyên là Vạn hộ Đáp Thứ Xích và Lưu Thế Anh phải dẫn quân quay trở lại phía sau đối phó với quân Trần, sau một trận giao chiến bắt được và giết các tướng Trần chỉ huy toán quân tập kích là các tướng Phạm Trù và Nguyễn Kị.
Ngày 7 tháng 3 năm Mậu Tý (8 tháng 4 năm 1288), cánh quân Mông Cổ rút bằng đường thủy đi tới Trúc Động, tại đây họ bị quân nhà Trần chặn đánh, nhưng tướng Nguyên là Lư Khuê chỉ huy quân này đánh lui quân nhà Trần và chiếm được 20 thuyền chiến.
Ngày 8 tháng 3 (9 tháng 4 năm 1288), Ô Mã Nhi không cho quân rút về bằng đường biển mà đi theo sông Bạch Đằng, vì tính rằng đường biển đã bị thủy quân nhà Trần vây chặt thì phòng bị đường sông có thể sơ hở, hơn nữa sông Bạch Đằng nối liền với nội địa Trung Quốc bằng thủy lộ, thuận lợi cho việc rút lui.
Bố trí quân Trần
Năm 1288, sau khi rút lui khỏi kinh đô Thăng Long, Trần Hưng Đạo đã quyết định đánh một trận lớn chống quân Mông Cổ xâm lược đi vào Đại Việt thông qua sông Bạch Đằng. Sông Bạch Đằng trước đó cũng là một địa danh lịch sử khi Ngô Quyền đã từng đánh thắng quân Nam Hán trong năm 938, kết thúc gần 1000 năm Bắc thuộc. Trần Hưng Đạo đã nghiên cứu kỹ lưỡng quy luật thủy triều của con sông này để vạch ra thế trận cọc để mai phục quân Mông Nguyên
Trần Hưng Ðạo chỉ huy quân dân Đại Việt chuẩn bị một trận địa mai phục lớn trên sông Bạch Ðằng, là nơi đoàn thuyền của quân Nguyên sẽ phải đi qua trên đường rút chạy. Các loại gỗ lim, gỗ táu đã được đốn ngã trên rừng kéo về bờ sông và được đẽo nhọn cắm xuống lòng sông ở các cửa dẫn ra biển như sông Rút, sông Chanh, sông Kênh làm thành những bãi chông ngầm lớn, kín đáo dưới mặt nước. Ghềnh Cốc là một dải đá ngầm nằm bắt ngang qua sông Bạch Ðằng nhưng phía dưới sông Chanh, đầu sông Kênh, có thể sử dụng làm nơi mai phục quân lính phối hợp với bãi chông ngầm nhằm ngăn chận thuyền địch khi nước rút xuống thấp. Thủy quân Đại Việt bí mật mai phục phía sau Ghềnh Cốc, Ðồng Cốc, Phong Cốc, sông Khoai, sông Thái, sông Gia Ðước, Ðiền Công, còn bộ binh bố trí ở Quảng Yên, dọc theo bờ bên trái sông Bạch Ðằng, Tràng Kênh ở bờ bên phải sông Bạch Ðằng, núi Ðá Vôi..., ngoại trừ sông Ðá Bạc là để trống cho quân Nguyên kéo vào. Ðại quân của hai vua đóng quân ở Hiệp Môn (Kinh Môn, Hải Dương) trong tư thế sẵn sàng lâm trận cho chiến trường quyết liệt sắp xảy ra.
Diễn biến trận đánh
Khi Ô Mã Nhi dẫn đoàn thuyền tiến vào sông Bạch Đằng nhân lúc nước lớn, thủy quân nhà Trần tràn ra giao chiến, rồi giả thua chạy vào sâu bên trong. Ô Mã Nhi trúng kế khích tướng nên thúc quân ra nghênh chiến, các tướng Phàn Tham Chính, Hoạch Phong cũng ra tiếp ứng. Khi thuyền quân Nguyên đã vào sâu bên trong sông Bạch Đằng, tướng Nguyễn Khoái dẫn các quân Thánh Dực ra khiêu chiến và nhử quân Nguyên tiến sâu vào khúc sông đã đóng cọc, trong khi quân Trần đợi cho thủy triều xuống mới quay thuyền lại và đánh thẳng vào đội hình địch. Bình chương Áo Lỗ Xích của Nguyên Mông đã bị bắt sống trong cuộc chiến đấu quyết liệt của quân Thánh Dực.
Thủy quân Đại Việt từ Hải Đông - Vân Trà từ các phía Điền Công, Gia Đước, sông Thái, sông Giá nhanh chóng tiến ra sông Bạch Đằng, với hàng trăm chiến thuyền cùng quân lính các lộ dàn ra trên sông và dựa vào Ghềnh Cốc thành một dải thuyền chặn đầu thuyền địch ngang trên sông. Trong lúc thủy chiến đang diễn ra dữ dội thì đoàn chiến thuyền của hai vua Trần đóng ở vùng Hiệp Sơn (Kinh Môn, Hải Dương) bên bờ sông Giáp (sông Kinh Thầy, vùng Kinh Môn, Hải Dương) làm nhiệm vụ đánh cầm chừng và cản bước tiến của địch, cũng tấn công từ phía sau khiến quân Nguyên càng lúng túng và tổn thất rất nặng. Theo Đại Việt Sử ký Toàn thư, "nước sông do vậy đỏ ngầu cả"[2]. Bị bất lợi hoàn toàn, rất nhiều thuyền chiến của quân Nguyên bị cháy rụi[1]. Bị tấn công tới tấp trên sông, một số cánh quân Nguyên bỏ thuyền chạy lên bờ sông bên trái của Yên Hưng để tìm đường trốn thoát, nhưng vừa lên tới bờ họ lại rơi vào ổ phục kích của quân Trần, bị chặn đánh kịch liệt. Trời về chiều khi giao tranh sắp kết thúc, Ô Mã Nhi cùng với binh lính dưới quyền chống cự tuyệt vọng trước sự tấn công của quân Trần, vì quân Nguyên của Thoát Hoan không tới cứu viện, nên đạo quân này hoàn toàn bị quân Trần tiêu diệt. Theo Nguyên sử, truyện của Phàn Tiếp chép rằng kịch chiến xảy ra từ giờ mão đến giờ dậu, tức là từ sáng kéo dài đến chiều tối mới kết thúc. Nguyên Sử có chép về tướng Nguyên Phàn Tiếp: "Tiếp cùng Ô Mã Nhi đem quân thủy trở về, bị giặc đón chặn. Triều sông Bạch Đằng xuống, thuyền Tiếp mắc cạn. Thuyền giặc dồn về nhiều, tên bắn như mưa. Tiếp hết sức đánh từ giờ mão đến giờ dậu. Tiếp bị thương, rớt xuống nước. Giặc móc lên bắt, dùng thuốc độc giết".
Bia Lý Thiên Hựu cũng chép: "Tháng ba, đến cảng Bạch Đằng, người Giao chắn chiến hạm ngang sông để chống cự quân ta, đến lúc nước triều rút, thuyền không tiến được, quân tan vỡ…".[7] Lý Thiên Hựu là 1 viên tướng Nguyên cũng tham gia trận Bạch Đằng.
Kết cục
Quân nhà Trần đại thắng, bắt được hơn 400 chiến thuyền, tướng Đỗ Hành bắt được tướng Nguyên là Tích Lệ Cơ và Ô Mã Nhi dâng lên Thượng hoàng Trần Thánh Tông. Thượng hoàng đã vui vẻ hậu đãi những viên bại tướng này.[2] Khoảng hơn 4 vạn tướng sĩ Nguyên Mông đã bị loại ra khỏi vòng chiến[1]. Tướng Nguyên là Phàn Tiếp bị bắt sống, rồi bị bệnh chết, trong khi một bại tướng khác là Phạm Nhan thì đã bị Trần Quốc Tuấn cho trảm quyết.[1] Cánh thủy quân của quân Nguyên hoàn toàn bị tiêu diệt. Chiến thắng vinh quang của quân Đại Việt trong trận sông Bạch Đằng năm 1288 được xem là một trận đánh hủy diệt và thủy chiến lớn nhất trong lịch sử kháng chiến của dân tộc Việt Nam, và cũng được xem là thắng lợi tiêu biểu nhất của quân Đại Việt trong ba cuộc kháng chiến chống quân xâm lược Nguyên-Mông, dẫn đến chấm dứt thắng lợi cho Đại Việt trong cuộc Chiến tranh Nguyên Mông-Đại Việt lần thứ ba.