Trận Cao Bằng là một loạt các trận đánh từ tháng 2 đến tháng 8 năm 1677 giữa quân Lê - Trịnh và lực lượng tàn dư của nhà Mạc đang cát cứ Cao Bằng. Đây là loạt những trận đánh cuối cùng và chấm dứt hoàn toàn chiến tranh Lê-Mạc, thế lực nhà Mạc hoàn toàn bị tiêu trừ và vùng lãnh thổ Cao Bằng được sáp nhập trở lại vào với Đại Việt. Đầu năm 1593, quân Trung hưng nhà Lê, đại phá quân Mạc, bắt giết được vị vua cuối cùng của nhà Mạc là Mạc Mậu Hợp. Thống lãnh lực lượng Trung hưng Trịnh Tùng rước vua Lê Thế Tông trở lại Thăng Long, đánh dấu mốc nhà Lê trung hưng, đồng thời xác lập quyền lực của chúa Trịnh với quyền thế tập. Tuy vậy, khi đó thế lực tàn dư của nhà Mạc vẫn còn rất mạnh, các vùng như Thái Nguyên, Lạng Sơn, Cao Bằng, Hải Dương, Sơn Nam, Kinh Bắc... vẫn nằm dưới quyền kiểm soát của các tông thất nhà Mạc như Mạc Kính Chỉ, Mạc Kính Cung, Mạc Kính Khoan, Mạc Kính Dụng, Mạc Kính Chương... Trong vòng 30 năm, do sự uy hiếp của lực lượng tàn dư của nhà Mạc, các chúa Trịnh đã 2 lần phải rước vua Lê chạy vào Thanh Hóa (1600, 1623). Năm 1625, sau khi dẹp yên được nội loạn, quân Trịnh mạnh trở lại, đánh bật quân Mạc và bắt giết Mạc Kính Cung. Tàn quân Mạc rút về Cao Bằng cố thủ. Quân Trịnh đóng lâu ngày ở Cao Bằng bị hết lương, phải rút về kinh. Tuy nhiên, để bảo toàn lực lượng và có thời gian củng cố thế lực, Mạc Kính Khoan đã sai người dâng biểu xin quy thuận nhà Lê. Nhận thấy chưa thể diệt ngay hết được nhà Mạc, vua Lê Thần Tông bèn thuận phong Mạc Kính Khoan chức Thái úy Thông quốc công và giao trấn giữ vùng biên giới. Trên thực tế, đây là ý đồ của chúa Trịnh nhằm vỗ về và duy trì yên ổn phía Bắc để chuẩn bị khởi đại quân vào Nam để đánh dẹp chúa Nguyễn. Thời gian trì hoãn quý báu đã được Mạc Kính Khoan tận dụng để củng cố thế lực cát cứ Cao Bằng. Đất Cao Bằng vốn là căn cứ địa của Mạc Kính Khoan, nhờ vậy, dù quân Trịnh nhiều lần đánh lên Cao Bằng đều không bắt được ông; và khi quân Trịnh rút đi, Mạc Kính Khoan nhanh chóng khôi phục được thế lực. Tháng 1 () năm 1638, Mạc Kính Khoan chết, con là Mạc Kính Vũ kế nghiệp. Tháng 3 () năm đó, vin cớ Mạc Kính Vũ tiếm hiệu xưng vương, chúa Trịnh tấn công Cao Bằng nhưng thất bại phải rút quân về. Tháng 12 () cùng năm (tức khoảng tháng 1 năm 1639), quân Trịnh một lần nữa tấn công Cao Bằng, vẫn không dứt điểm được quân Mạc, lại phải lui binh. Tháng 6 () năm 1639, quân Trịnh lại tiến đánh, duy trì đến tháng () (tức khoảng tháng 1 năm 1640), cũng lại rút. Quân Mạc luôn áp dụng lối đánh tránh quân chủ lực của quân Trịnh, lẩn khuất tập kích, quân Trịnh không đánh được, lại phải rút binh. Bên cạnh đó, chúa Mạc cũng nương theo thái độ của nhà Minh, khi quân Trịnh tấn công mạnh thì chạy sang Trung Quốc, vì vậy quân Trịnh không thể dứt điểm được. Thậm chí, tháng 5 () năm 1643, nhân lúc chúa Trịnh Tráng đi đánh chúa Nguyễn Phúc Nguyên ở Thuận Hóa, nhà Mạc đã tung quân đánh phá ra Thái Nguyên, Bắc Cạn. Tháng 12 (), quân Trịnh tiến công trả đũa, nhưng vẫn không diệt được quân Mạc, lại phải rút về. Nhà Minh bị diệt, Mạc Kính Vũ lại nương theo nhà Thanh. Trong các năm 1662, 1666 và 1667, quân Trịnh lại liên tiếp tấn công lên Cao Bằng. Quân Mạc khi thua trận lại rút sang Long châu (Trung Quốc), khi quân Trịnh lui thì lại trở về Cao Bằng. Thậm chí, năm 1667, nhà Thanh còn gây sức ép đế nhà Lê, buộc phải cắt đất Cao Bằng cho chúa Mạc. Bên cạnh đó, các thế lực cát cứ khác là chúa Bầu ở Tuyên Quang và chúa Nguyễn ở Thuận Quảng, cũng tìm cách liên kết với nhà Mạc để chống lại thế lực của chúa Trịnh. Nhận thấy mặc dù chúa Mạc đã suy yếu, nhưng vẫn còn rất được lòng dân, đồng thời được hậu thuẫn từ nhà Thanh, nên vẫn chưa thể bình định được đất Cao Bằng, chúa Trịnh bèn thay đổi sách lược, tích cực cài cắm thám tử, tích quân dồn lương, chờ cơ hội phát binh tiêu diệt chúa Mạc. Đầu năm 1677, khi nhà Thanh dần trấn áp được Loạn Tam phiên, nhân việc Mạc Kính Vũ từng có qua lại với Ngô Tam Quế, chúa Trịnh đưa thư sang tố với nhà Thanh là Mạc Kính Vũ có giao hảo và giúp lương cho Ngô Tam Quế, hòng ngăn cản nhà Thanh tiếp tục hậu thuẫn cho chúa Mạc. Tháng 2 () năm 1677, chúa Trịnh huy động quân năm trấn, sai Đinh Văn Tả, Nguyễn Hữu Đăng làm thống lĩnh, dẫn quân lên tiến đánh Cao Bằng. Về phía chúa Mạc, ngoài thành Nà Lữ (còn gọi là thành Cao Bằng) là trung tâm chỉ huy, Mạc Kính Vũ đã cho tu bổ kiên cố hệ thống các thành Mục Mã (còn gọi là thành Bản Phủ), Phục Hòa, cùng các đại đồn như Khau Đồn, Háng Quang, Khau Cút... kéo dài đến hậu cứ nhà Mạc ở Lam Sơn (nay thuộc xã Hồng Việt, Hòa An). Bên cạnh đó, chúa Mạc còn cho xây dựng phòng tuyến tả ngạn sông Mãng Giang (nay là sông Bằng Giang) cực kỳ vững chắc, chuẩn bị chống trả, tiêu hao lực lượng chủ lực của quân Trịnh khi tiến quân lên Cao Bằng. Nhờ những thông tin từ các thám tử báo về, quân Trịnh đã tổ chức binh lực chia làm 2 đường tiến lên Cao Bằng. Một cánh quân do Thái phó Nguyễn Hữu Đăng cùng Tả thị lang Hoàng Triều Hoa thống lĩnh, tiến theo đường Thái Nguyên. Cánh quân còn lại do Đô đốc Đinh Văn Tả cùng Thiếu úy Hoàng Triều Ninh thống lĩnh, tiến theo đường Lạng Sơn. Tháng 5 () năm 1677, cánh quân của Nguyễn Hữu Đăng tập kết từ Bó Lài (nay thuộc xã Vân Tùng, Ngân Sơn), tiến quân vượt Pò Mò, Khau Mu (nay thuộc xã Bằng Vân, Ngân Sơn), xuyên rừng, công hạ các đồn Khau Cút, Khau Đồn (nay thuộc xã Bình Dương, Hòa An). Nguyễn Hữu Đăng muốn thừa thắng vượt sông Mãng Giang, nhưng vấp phải kháng cự của quân Mạc, không sao phá được, đành chờ quân ở Lạng Sơn lên hợp lực. Trong khi đó, cánh quân của Đinh Văn Tả theo đường Lạng Sơn tiến lên đến Thất Tuyền (nguyên là châu Thất Nguyên, nhà Mạc vì kiêng húy Mạc Phúc Nguyên nên mới đổi làm Thất Tuyền, nay thuộc huyện Tràng Định), bí mật vượt suối, tập kích diệt gọn thành Mục Mã (nay thuộc phường Hợp Giang, thành phố Cao Bằng). Thành Mục Mã là nơi tập trung binh lực mạnh nhất của quân Mạc. Thành Mục Mã bị hạ, thành Nà Lữ gần như phơi mình ra trước chủ lực của quân Trịnh. Vì vậy, khi biết tin thành Mục Mạ thất thủ, chúa Mạc bèn ra lệnh đại đồn tiền tiêu Khau Yắm (Kỳ Sơn) bằng mọi cách chặn đứng quân Trịnh. Tuy nhiên, quân Trịnh thừa thắng, nhánh chóng tiến lên công hạ đồn Khau Yắm. Tới đây, hai cánh quân Trịnh hội quân, công hạ đồn Đống Lân (nay thuộc xã Hưng Đạo, thành phố Cao Bằng) nằm ở phía Tây thành Mục Mã, sau đó tập kết ở hữu ngạn sông Mãng Giang để vượt sông. Quân Trịnh ào ạt bắc nhiều cầu phao, chia quân vượt sông đánh tan phòng tuyến tả ngạn sông Mãng Giang, tiến đến bao vây thành Nà Lữ. Quân Mạc núng thế, các tướng Mạc bí mật đưa chúa Mạc chạy về mạn Phúc Sơn, vào cứ điểm lũng Đông Đăm (trên núi đá Phúc Tăng - sau này có tên là Lũng Hoàng) đã được chuẩn bị từ trước. Đồng thời, quân Mạc cũng tổ chức nghi binh, giả cách như chúa Mạc chạy về hướng bắc Nà Vẩư (nay thuộc xã Bế Triều, Hòa An). Quân Trịnh trúng kế, đuổi theo đến Đà Lạn mới phát hiện ra thì chúa Mạc đã về được núi Phúc Tăng. Tuy nhiên, thành Nà Lữ rất kiên cố, quân Mạc cũng kiên cường chống trả. Quân Trịnh đánh ròng rã trong 2 tháng vẫn không hạ được, phải xin thêm viện binh và quân luơng. Đến tháng 7 (), thành thất thủ. Quân Trịnh tiếp tục đánh hạ các đồn Khau Thước (nay thuộc ranh giới hai xã Hồng Việt và Hoàng Tung, huyện Hòa An), Háng Quang, rồi tiến lên phía Bắc đánh hạ đồn Vỏ Mjủc (Hòa Mục, Đôn Chương), sau đó vây chặt cứ điểm cuối của của chúa Mạc ở núi Phúc Tăng. Chúa Mạc bị vây khốn, bèn bí mật trốn về thành Phục Hòa. Nhận được tin, quân Trịnh đuộc theo truy kích đến thành Phục Hòa. Tháng 8 (), thành bị hạ. Chúa Mạc trốn sang Long Châu (Trung Quốc), Cao Bằng hoàn toàn do quân Trịnh kiểm soát. Trận Cao Bằng năm 1677 là giao tranh đáng kể cuối cùng giữa chính quyền Lê-Trịnh và họ Mạc. Với thắng lợi của quân Trịnh trong chiến dịch Cao Bằng 1677, thế lực nhà Mạc đã tan rã, không còn có thể là một mối đe dọa với thế lực của chúa Trịnh. Xét về cơ bản, kết quả chiến dịch năm 1677 đánh dấu mốc thời điểm thế lực họ Mạc tan rã tại Cao Bằng, không thể gây dựng lại được như trước. Theo một số nhà nghiên cứu, chúa Mạc thực tế vẫn cố thủ co cụm trong thành Phục Hòa (vốn trên đường thoát qua Long Châu) thêm 8 năm nữa, đến năm 1685 mới đầu hàng quân Trịnh, và mãi đến năm 1692, khi bắt được Mạc Trí Kính, quân Trịnh mới hoàn toàn yên ổn kiểm soát được Cao Bằng. Họ Mạc bị diệt ở Cao Bằng khiến chúa Bầu ở Tuyên Quang cát cứ từ đầu thế kỷ 16 không còn lực lượng liên kết. Không lâu sau, năm 1689, chúa Bầu Vũ Công Tuấn cũng bị quân Trịnh bắt giết, vùng Tuyên Quang được thu phục. Trận Cao Bằng mở đầu cho việc nhất thống hoàn toàn lãnh thổ Đại Việt trước đây đã nằm dưới quyền kiểm soát của chúa Trịnh, dưới danh nghĩa của nhà Hậu Lê.