Từ khi Quách Quỳ đem quân Tống vượt biên ải, chỉ trong vòng 10 ngày đã tiến đến bờ bắc sông Phú Lương. Vua Tống Thần Tông ban đầu nghe tin báo về trong bụng lấy làm vui mừng, đích thân lấy bản đồ mà chỉ dẫn cho các quan lại Tống triều biết về đường tiến của quân Tống. Thế nhưng niềm vui của vua Tống là quá sớm và cũng nhanh chóng bị dập tắt. Kể từ khi quân Tống bị chặn lại ở bến Như Nguyệt, ngày này qua ngày khác tin tức báo về triều Tống là quân của Quách Quỳ vẫn chôn chân tại chỗ, tiến công đều bị thất bại và chịu tổn thất. Vua Tống rất nóng lòng, sai phát thẻ bài đặc biệt cho lính đưa thư để đi qua các dịch trạm không phải dừng, hàng ngày báo quân tin liên tục về triều đình.
Quách Quỳ biết rằng thế phòng thủ ở bờ nam Như Nguyệt rất vững chắc nên sau hai lần vượt sông thất bại, y nhất quyết án binh bất động. Quách Quỳ bàn với các thuộc hạ giả cách lơ là, nhử quân Đại Việt sang đánh. Nhưng kế này đã bị Lý Thường Kiệt biết thừa. Vì thế, thay vì tung quân đánh lớn, quân Đại Việt chỉ cho thủy quân xuôi dòng sông Phú Lương đánh nhử và quấy rối quân Tống. Lúc này thì quân Tống lại phải căng sức ra để tuần ra dọc sông, đặt máy bắn đá bắn các thuyền chiến Đại Việt và bắn sang bờ nam. Quân Đại Việt thấy vậy cũng án binh bất động, giữ kỹ chiến tuyến. Chiến cuộc cứ thế kéo dài gần hai tháng trời. Lúc này thì quân Tống không cần phải giả yếu, mà đã yếu thật. Tình trạng thiếu lương thực, thuốc men, không hợp thủy thổ đã làm suy sút tinh thần và và sức chiến đấu của quân Tống rất nhiều. Nắm được thời cơ đó nên vào cuối tháng 2.1077, Lý Thường Kiệt quyết định chủ động tấn công.
Mở màn cuộc tấn công, 400 chiến thuyền chở 2 vạn thủy quân Đại Việt dưới trướng của Hoằng Chân, Chiêu Văn từ căn cứ Vạn Xuân được lệnh xuất kích, tấn công quân Tống từ hướng đông. Đại doanh quân Tống lúc này có khoảng hơn 5 vạn quân. Cuộc tấn công của thủy quân Vạn Xuân là đòn nghi binh, theo kế dương đông kích tây mà Lý Thường Kiệt vạch ra. Tuy vậy cuộc tấn công này không chỉ là đòn hư, mà là một đòn tấn công thực sự mạnh mẽ. Thủy quân Đại Việt đổ bộ lên chân núi Nham Biền, đẩy lui 5.000 kỵ binh địch đóng tại đây.
Sau khi chiếm được núi Nham Biền, quân đổ bộ Đại Việt từ trên núi đánh xuống thật mạnh vào đại doanh của Quách Quỳ. Lớp lớp quân đổ bộ Đại Việt đánh tràn vào khu trung tâm căn cứ của Quách Quỳ, chọc thủng mấy hàng phòng thủ ngoại vi. Quách Quỳ đều toàn bộ các tướng kỵ binh còn lại tung vào trận. Kỵ binh Tống mang sang nước ta chừng 1 vạn, thì nay còn lại 7.000 quân kỵ đều tham chiến. Những tướng giỏi nhất của Tống là Yên Đạt, Tu Kỷ, Nhâm Khởi, Thế Cự, Vương Mãn, Lý Trường, Điền Chưng… đều ra sức chiến đấu.
Một trận giao tranh đẫm máu diễn ra, hai bên đều thương vong lớn. Một phần quân Tống từ hướng bản doanh của tướng Triệu Tiết và quân các cụm trung gian nằm giữa hai khối quân của Quách Quỳ, Triệu Tiết cũng được điều động sang tiếp viện. Trước sức mạnh của kỵ binh Tống, thủy quân Đại Việt vốn có khả năng đánh bộ yếu hơn, dần yếu thế. Nhận thấy cuộc tấn công đã gây nhiều thiệt hại và xáo trộn cho địch, hoàn thành nhiệm vụ nghi binh và tiêu hao, thủy quân Đại Việt rút lui. Quân Tống dùng máy bắn đá bắn với theo thuyền, làm cho quân ta thiệt hại rất nhiều. Hàng ngàn quân Đại Việt tử trận trong cuộc tấn công này, trong đó có cả hai hoàng thân Hoằng Chân, Chiêu Văn. Hoằng Chân, Chiêu Văn xuất hiện trong sử sách luôn luôn sóng đôi với nhau.
Hai vị này đều là con trai của vua Lý Thái Tông, em trai của vua Lý Thánh Tông và là chú ruột của vua Lý Nhân Tông thời bấy giờ. Hai ông dù địa vị hoàng thất mà không ngại xông pha đầu trận tuyến, xả thân vì đại cuộc, đến đây thì tử trận. Đội thân binh 500 người dưới trướng Hoằng Chân cảm khái trước sự hy sinh của chủ tướng, thà chết không chịu rời thuyền, chiến đấu đến cùng. Mặc cho thuyền bị quân Tống bắn chìm, tay cầm kim bài mà chết theo chủ tướng. Thủy quân đổ bộ Đại Việt còn lại hơn 1 vạn, giong thuyền rút lui an toàn.
Đòn tấn công của thủy quân Đại Việt tuy rất mạnh nhưng chỉ là đòn nghi binh. Trong lúc bố trí lực lượng của quân Tống bị xáo trộn do cuộc tấn công của thủy quân, lợi dụng trời tối Lý Thường Kiệt tung quân đánh đòn quyết định. Toàn bộ 4 vạn quân còn lại ở phòng tuyến Như Nguyệt do đích thân Lý Thường Kiệt chỉ huy chớp thời cơ đang đêm dùng thuyền vượt sông đánh thẳng vào doanh trại của tướng Triệu Tiết. Lực lượng tại doanh trại của Triệu Tiết lúc này còn khoảng trên 3 vạn quân nhưng sức chiến đấu đã suy giảm nhiều. Quân trong doanh Triệu Tiết đã yếu, quân ở các cụm trung gian gần đó lại đã điều sang tiếp viện cho đại doanh của Quách Quỳ nên gần như cụm quân của Triệu Tiết bị cô lập.
Quân Đại Việt hừng hực khí thế, thình lình tiến công khiến cho quân tướng trong doanh của Triệu Tiết vô cùng bất ngờ, trở tay không kịp. Quân Đại Việt dưới sự chỉ huy trực tiếp của Lý Thường Kiệt nhanh chóng làm chủ hoàn toàn trận địa, thả sức chém giết quân Tống. Hầu như toàn bộ quân trong doanh trại của Triệu Tiết bị tiêu diệt. Tiết cùng một số ít tàn quân chạy thục mạng về đại doanh của Quách Quỳ. Toàn cục trận chiến kép, quân Tống ở cả doanh trại Triệu Tiết và đại doanh của Quách Quỳ tổng số chết đến gần 5 vạn quân. Cộng với quân số đã hao hụt từ trước đó, Quách Quỳ còn trong tay không tới 4 vạn quân mà một số lớn là mệt mỏi ốm yếu. Về phía quân Đại Việt, trải qua giao chiến quân số ở toàn chiến tuyến Như Nguyệt vẫn còn hơn 5 vạn quân, lại hoàn toàn khỏe mạnh nhờ hậu cần đầy đủ.
Quân Đại Việt chiếm lĩnh doanh trại của Triệu Tiết, đối trận ngay tại bờ bắc Như Nguyệt với khối quân mệt mỏi của Quách Quỳ. Dưới sông thủy quân Đại Việt vẫn còn một lực lượng đáng kể dù cho mất đi hai vị hoàng thân Hoằng Chân, Chiêu Văn cùng hàng ngàn quân trong đợt tấn công vào đại doanh Quách Quỳ. Thế và lực hoàn toàn thuận lợi cho quân ta.
Lúc này, quân Đại Việt hoàn toàn có thể thừa thắng dứt điểm luôn số quân tướng còn lại của quân Tống. Nhưng rõ ràng là bấy giờ Đại Việt không chỉ phải đối phó với một kẻ thù. Từ phương nam, đầu năm 1077 liên quân Chiêm Thành – Chân Lạp do đích thân vua Harivarman IV của nước Chiêm Thành trực tiếp chỉ huy cũng đã bắt đầu tấn công Đại Việt. Hiện tại, sử liệu về mặt trận phía nam quá khiêm tốn để có thể miêu tả chi tiết. Nước Chiêm Thành, Chân Lạp thời này do những hạn chế về hệ thống nhà nước, hậu cần tương đối kém so với nước Tống nên thường khó mà huy động những lực lượng viễn chinh lớn.
Quân số của liên quân Chiêm Thành – Chân Lạp cộng lại ước chừng dao động từ 1 – 2 vạn quân, trong đó có 7.000 thủy quân Chiêm Thành. Liên quân Chiêm Thành – Chân Lạp đã tiến chiếm được các châu Minh Linh, Bố Chính, Lâm Bình. Binh lực Đại Việt ở đây khá mỏng nên chỉ trong thời gian ngắn đã không giữ nổi. Quân của hai nước Chiêm Thành – Chân Lạp tràn vào Nghệ An, Diễn Châu. Chiến sự tại những nơi này đã diễn ra khá gay gắt, tin tức chiến trường từ phía nam liên tục báo về triều đình nhà Lý. Quân Đại Việt tại vùng Diễn Châu, Nghệ An gồm có lộ quân (quân địa phương tại các châu, phủ) làm nòng cốt, dân quân (dân trong làng, xã sung quân), cùng với hàng ngàn tù binh Tống bị bắt trong chiến dịch phạt Tống 1076 bị ép sung quân.
Hiển nhiên với lực lượng như thế thì phía Đại Việt chỉ có thể giữ thế phòng thủ để kéo dài thời gian. Tại Chân Lạp, vua Harshavarman III lại chuẩn bị một đạo quân thứ hai gởi sang Chiêm Thành, dự tính sẽ theo đường biển tiếp viện cho liên quân đang tấn công Đại Việt. Chiến sự phía nam đòi hỏi Lý Thường Kiệt phải có một giải pháp vừa nhanh gọn với quân Tống, vừa phải bảo toàn được quân lực để bảo vệ đất nước.
Bấy giờ tuy quân Tống đã khốn quẫn, nhưng nếu bị tấn công rất có thể sẽ tử chiến đến cùng trong thế không còn đường lui. Như vậy sẽ khó tránh đổ máu lớn cho quân Đại Việt để giành phần thắng trọn vẹn. Lý Thường Kiệt hiểu rằng, Đại Việt so với Tống thời bấy giờ là một nước nhỏ hơn hàng chục lần, nếu chiến tranh liên miên ắt khó tránh được nhiều tang thương. Thêm nữa, mối đe dọa của Đại Việt không chỉ có một mình nước Tống. Chiêm Thành, Chân Lạp quốc lực cũng không đến nỗi quá thua kém Đại Việt, có thể thừa cơ đánh úp bất cứ lúc nào. Trước tình hình trên, Lý Thường Kiệt đã chủ động cho sứ giả sang trại của quân Tống để “xin hòa”.