Hai tháng sau khi tấn công phòng tuyến Như Nguyệt thất bại, gần 10 vạn quân Tống không biết làm gì hơn là ngồi im một chỗ (Quách Quỳ có lệnh “Ai bàn đánh sẽ chém”).
Tình hình quân Tống lúc đó như sau: tấn công phòng tuyến thì bị hất về, chờ đường thủy hỗ trợ thì mãi không thấy đến, ngồi không thì tiêu hao số lớn lương thảo và lính bệnh chết ngày một tăng, tự ý rút về thì chắc chắn tướng tá bị rơi đầu hết. Trước đó 6 vạn thủy binh Tống cùng vài trăm chiến thuyền đã bị quân Lý tiêu diệt phần lớn tại trận Đông Kênh gần cửa Bạch Đằng, số tàn binh bại tướng tập hợp lại xong cũng không dám tiến vào nữa, chỉ đỗ thuyền tại cửa sông nghe ngóng tin tức mà thôi.
Nắm vững tin tức về các cánh quân địch, Lý Thường Kiệt đã lên kế hoạch phản công.
Chiến thuật rất đơn giản: cánh quân nhử mồi sẽ hư trương thanh thế rồi đánh thẳng vào trại chính của Quách Quỳ để dụ trại kia mang binh sang chi viện. Trong lúc đó chủ lực quân Lý sẽ nhắm vào trại phụ của phó tướng Triệu Tiết, đánh tiêu hao trại này càng nhiều càng tốt. Và thực tế diễn ra đúng như vậy: cánh quân mồi dù hi sinh 2 tướng và vài nghìn người nhưng đã dụ hết chủ lực Tống về hướng đó; còn trại phụ có chưa đầy 3-4 vạn bị đại quân Lý sang tập kích và quét sạch (thương vong từ 50% đến toàn bộ). Số quân Tống chết nằm la liệt tại gò đất nơi họ đóng quân, về sau cư dân địa phương gọi đó là gò Xác hay cánh đồng Xác.
Sau trận này thì quân Tống hao binh tổn tướng nặng, sĩ khí mất hết, cơ bản là cá nằm trên thớt và có thể bị tiêu diệt bất cứ lúc nào. Nhưng Lý Thường Kiệt đã chủ động nghị hòa để sớm chấm dứt chiến tranh, sứ nhà Lý được cử sang xin tạ tội vì đã đánh châu Khâm và châu Liêm, đồng thời tiếp tục nộp cống như cũ. Ngự sử nhà Tống là Trình Di và em trai Trình Hạo trong “Nhị Trình di thư” có nhận xét rằng: “May được lời giặc nói nhũn, liền nhân đó giảng hòa. Nếu không có lời quy thuận của giặc thì làm thế nào?”.
Tháng 3 năm đó, Quách Quỳ cho rút quân về nước. Tống sử chép: ” Quỳ muốn rút quân về, sợ giặc tập kích bèn bắt quân khởi hành ban đêm, hàng ngũ không được chỉnh tề, tình hình hỗn loạn, giày xéo lên nhau”. Nhưng là thiên triều đại quốc không thể muối mặt mà nhận thua, nên các sử quan Tống mới chép rằng “Đem binh phu đi 30 vạn người, gặp phải nắng nóng đất độc, chết quá nửa. Đến nay, lại cách giặc một con sông không thể tiến lên, bèn đem quân về”.
Đây được coi là thắng lợi lớn nhất của Đại Việt kể từ trận Bạch Đằng của Ngô Quyền xưa kia. Đại quân Tống trên bộ hơn 10 vạn người, 1 vạn ngựa và 20 vạn dân phu kéo sang nước ta, bị 6 vạn quân Lý (ước lượng của chính các sử gia Trung Quốc) chặn đánh, chết đến 16 vạn người (chưa tính tổn thất 6 vạn thủy quân), chiến phí tính ra hết 5.190.000 lạng vàng.
Sau chiến dịch này thì tể tướng Vương An Thạch chính thức bị vua Tống cách hết chức vụ, cho về vườn và chết già 10 năm sau. Từ đó Đại Việt duy trì nền hòa bình với phương Bắc suốt 200 năm, cho đến thời quân Mông cổ sang xâm lược.