Tháng 11/1788, gần 30 vạn quân Thanh do Tôn Sĩ Nghị thống lĩnh chia làm 4 đạo tiến vào nước ta. Đạo chủ lực do Tôn Sĩ Nghị trực tiếp chỉ huy tiến qua đường Lạng Sơn. Đạo thứ hai do Sầm Nghi Đống chỉ huy tiến theo đường Cao Bằng. Đạo thứ ba do Ô Đại Kinh chỉ huy theo đường Quảng Ninh. Quân Tây Sơn tập trung về Thăng Long rồi rút lui theo kế hoạch và chờ thời cơ đến. Bộ binh chốt giữ vùng núi Tam Điệp (Ninh Bình), thuỷ binh về đóng giữ vùng Biện Sơn (Thanh Hoá), liên hệ với nhau, lợi dụng địa hình lập thành một phòng tuyến chặn đường tiến quân của địch vào Thanh Hoá, Nghệ An và cấp báo với Nguyễn Huệ. Ngày 21/12/1788, ở Phú Xuân, Nguyễn Huệ nhận được tin báo của Ngô Văn Sở, ngày 22/12/1788, ông làm lễ lên ngôi Hoàng đế lấy niên hiệu là Quang Trung, rồi lập tức thống lĩnh đại quân khoảng 5 vạn người tiến ra Bắc. Bốn ngày sau, quân Quang Trung đến Nghệ An. Tại đây, Quang Trung tuyển binh, phiên chế, duyệt binh biểu dương lực lượng. Lúc này, quân Tây Sơn đã lên đến 10 vạn và tiếp tục hành quân ra Bắc. Quang Trung chia quân thành 5 đạo cùng xuất phát thần tốc tiến ra Bắc:
- Đạo quân chủ lực do Quang Trung trực tiếp chỉ huy tiến thẳng vào Thăng Long
- Đạo thứ hai và đạo thứ ba: Đánh Tây Nam Thăng Long yểm hộ và phối hợp với đạo chủ lực.
- Đạo thứ tư: đánh Hải Dương.
- Đạo quân thứ năm:Lên Bắc Giang bịt đường rút của quân Thanh.
Đêm 25/1/1789 (đêm 30 Tết), đạo quân chủ lực vượt sông Gián Khẩu nhanh chóng diệt gọn các đồn trên hệ thống dọc đường thiên lý từ Gián Khẩu đến Hà Hồi (Thường Tín, Hà Tây). Đêm 28/1, quân Tây Sơn bí mật tiếp cận vây chặt đồn Hà Hồi, một đồn luỹ trọng yếu của địch, cách Thăng Long 20km. Trước uy lực của quân ta, quân Thanh hoảng sợ phải đầu hàng.Mờ sáng ngày 30/1, quân Tây Sơn tiến đánh đồn Ngọc Hồi.
Cũng mờ sáng ngày 30/1, đạo quân thứ hai bất ngờ tiến công mãnh liệt vào đồn Khương Thượng-Đống Đa.Hốt hoảng, Tôn Sĩ Nghị cùng toán quân hộ vệ người không kịp mặc giáp, ngựa không kịp đóng yên “qua cầu phao rồi nhằm hướng Bắc mà chạy”. Trưa ngày 30/11/1789, tức mồng 5 Tết, Quang Trung cùng đạo quân chủ lực tiến vào kinh thành, kết thúc thắng lợi cuộc kháng chiến.