Công an Hà Nội nhập cuộc chủ động hơn và nhanh chóng tạo ra sức ép lên phần sân đối phương. Phút 20, Stefan Mauk thoát xuống rồi chuyền cho Đình Bắc chạm bóng tinh tế đánh bại thủ môn Văn Việt. Tuy nhiên, VAR vào cuộc kéo dài hơn 9 phút và trọng tài xác định Đình Bắc đã việt vị, khiến bàn thắng không được công nhận.

Công an Hà Nội nhập cuộc tốt khi chơi lấn lướt và có bàn mở tỷ số ngay phút thứ 32 của trận đấu.
Đến phút 32, đội chủ nhà vẫn có được điều họ cần. Leo Artur trả bóng ngược cho Lê Văn Đô băng vào dứt điểm quyết đoán, mở tỷ số 1-0 cho Công an Hà Nội. Sau bàn thua, Thể Công Viettel gặp khó trong việc triển khai tấn công nhưng vẫn kiên trì tận dụng các tình huống cố định.
Phút bù giờ hiệp 1, từ quả phạt góc, Wesley Nata tranh chấp khiến bóng chạm chân Cao Pendant Quang Vinh đi vào lưới, giúp Thể Công Viettel gỡ hòa 1-1 đúng ở nhịp cuối cùng của hiệp đấu.

Trận đấu diễn ra rất hấp dẫn với thế trận đôi công từ cả hai đội.
Sau giờ nghỉ, hai đội tiếp tục thi đấu giằng co. Công an Hà Nội có nhiều cơ hội rõ nét hơn, trong đó có tình huống Adou Minh dứt điểm vọt xà ở cự ly chỉ khoảng 5m. Phút 73, thủ môn Filip Nguyễn va chạm với Khuất Văn Khang trong vòng cấm nhưng trọng tài từ chối cho đội khách hưởng phạt đền.

Phút 77, Công an Hà Nội tái lập lợi thế. Leo Artur căng ngang để Stefan Mauk đệm bóng cận thành, nâng tỷ số lên 2-1. Tuy nhiên, những nỗ lực tấn công không biết mệt mỏi của Thể Công Viettel đã được đền đáp ở phút 90+1, khi VAR xác định Gomez phạm lỗi với Văn Khang trong vòng cấm và đội khách được hưởng phạt đền. Đến phút 90+5, Lucao lạnh lùng dứt điểm, gỡ hòa 2-2.
Trận đấu khép lại với tỷ số hòa 2-2 sau 90 phút thi đấu chính thức, trước khi hai đội bước vào loạt sút luân lưu để phân định tấm vé đi tiếp.
Trong loạt sút luân lưu định đoạt tấm vé đi tiếp, Công an Hà Nội và Thể Công Viettel tạo ra màn rượt đuổi đầy căng thẳng. Leo Artur mở đầu thành công cho Công an Hà Nội, nhưng Pendant Quang Vinh lại đá hỏng. Phía Thể Công Viettel, Trương Tiến Anh và Khuất Văn Khang đều thực hiện chuẩn xác, giúp đội khách vươn lên dẫn trước.
Khi Wesley Nata sút trúng xà ngang, còn Mauk đá quá hiền bị Văn Việt cản phá, Công an Hà Nội rơi vào thế bất lợi. Dù Hugo Gomes và Lê Văn Đô đều thực hiện thành công các lượt đá sau đó, Thể Công Viettel vẫn duy trì lợi thế khi Đinh Xuân Tiến sút 11m chuẩn xác.
Ở lượt sút quyết định, Lucao lạnh lùng đánh bại Filip Nguyễn, ấn định chiến thắng 4-3 cho Thể Công Viettel ở loạt sút luân lưu, dù thủ thành Công an Hà Nội đoán đúng hướng.
Chiến thắng của Thể Công Viettel cũng đồng nghĩa với việc Công an Hà Nội chính thức trở thành cựu vương của Cúp Quốc gia!