- Đứng trước nguy cơ bị xâm lược, nhà Trần khẩn trương chuẩn bị kháng chiến, tăng cường quân số ở những nơi hiểm yếu, nhất là vùng biên giới và vùng biển.
- Cuối tháng 12 - 1287, khoảng 30 vạn quân Nguyên tiến vào nước ta. Cánh quân bộ do Thoát Hoan chỉ huy, vượt biên giới đánh vào Lạng Sơn, Bắc Giang rồi kéo về Vạn Kiếp. Cánh quân thuỷ do Ô Mã Nhi chỉ huy theo đường biển tiến vào sông Bạch Đằng, rồi tiến về Vạn Kiếp.
- Tại Vân Đồn. Trần Khánh Dư chỉ huy quân mai phục, khi đoàn thuyền lương của Trương Văn Hổ đến, quân Trần đánh dữ dội. Phần lớn thuyền lương của giặc bị đánh đắm, số còn lại bị quân ta chiếm.
- Cuối tháng 1 - 1288, Thoát Hoan kéo quân vào kinh thành Thăng Long trống vắng. Sau trận Vân Đồn, tình thế quân Nguyên ngày càng khó khăn, nhiều nơi xung yếu bị quân Trần tấn công chiếm lại, lương thực ngày càng cạn kiệt, quân giặc ở Thăng Long đứng trước tình thế bị cô lập. Thoát Hoan quyết định rút quân về Vạn Kiếp và từ đây rút quân về nước theo hai đường thuỷ, bộ.
- Nhà Trần mở cuộc phản công ở cả hai mặt trận thuỷ, bộ:
+ Chiến thắng Bạch Đằng tháng 4 - 1288, đoàn thuyền của Ô Mã Nhi lọt vào trận địa bãi cọc trên sông Bạch Đằng do quần Trần bố trí từ trước, cuộc chiến đấu ác liệt diễn ra, Ô Mã Nhi bị bắt sống.
+ Trên bộ, Thoát Hoan dẫn quân từ Vạn Kiếp theo hướng Lạng Sơn rút về Trung Quốc, bị quân dân ta liên tục chặn đánh.