
Перед полуфиналом Кубка России по пути регионов «Зенит» и «Спартак» подошли с разной формой. Петербуржцы имели серию из четырёх побед, уверенно играя весной. «Спартак» под руководством Хуана Карлоса Карседо постепенно набирал ход, одержав пять побед в семи матчах года и выиграв три игры подряд, включая дерби с «Локомотивом».

При этом «Спартак» не побеждал в Петербурге с 2012 года — 14 лет. В четырёх предыдущих матчах на «Газпром Арене» красно-белые не забили ни одного гола. Однако в этот раз «Зенит» сам помог сопернику прервать неудачные серии.
Перед матчем фанаты «Зенита» через объединение «Ландскрона» призвали отказаться от оскорблений в адрес «Спартака», ссылаясь на Страстную неделю и идею зрелой поддержки. Но при объявлении состава гостей трибуны после каждой фамилии кричали «свинья». Болельщики «Спартака» ответили баннером с надписью «Галя, у нас отмена», намекая на перенесённое столетие «Зенита». Также досталось бывшему игроку «Спартака» Александру Соболеву.
Сергей Семак не стал полностью ротировать состав, но и основой его выбор не был. В старте появились Нуралы Алип, Андрей Мостовой, Джон Дуран, а в защите Ваня Дркушич из-за восстановления Густаво Мантуана. В воротах стоял кубковый вратарь Давид Латышонок, в центре защиты Нино и Алип, слева капитан Сантос, в полузащите Барриос и Вендел, а Педро вернулся после травмы. Главным решением стал выход Дурана вместо Соболева, что Семак объяснил ротацией и учётом усталости игроков. У «Спартака» вышел практически основной состав, который обыграл «Локомотив», но без номинального центрфорварда.
Первый тайм прошёл вязко, с большим количеством борьбы и пауз. Обе команды часто теряли мяч. «Спартак» активнее прессинговал, «Зенит» иногда находил ходы через левый фланг с Сантосом и Мостовым. Ближе к перерыву Луис Энрике в борьбе с Барко задел мяч рукой, и после просмотра VAR арбитр Артём Чистяков назначил пенальти. Барко пробил низом по центру, но Латышонок среагировал и взял мяч. Игра оставляла тяжёлое впечатление из-за непоследовательного судейства и просадки структуры «Зенита», особенно в атаке, где Дуран оставался невидим.
После перерыва «Зенит» начал активнее, появились моменты у Энрике и Мостового, но остроты не хватало. Семак заменил Дурана и Педро на Глушенкова и Соболева, но это не изменило ход игры. «Спартак» отвечал давлениями: Маркиньос атаковал, Барко бил издали, Литвинов выигрывал верховые борьбы. К середине тайма гости выглядели живее. В концовке у «Зенита» был лучший шанс: молодой Кондаков оказался один в штрафной, но Максименко парировал его удар. В ответ «Спартак» создал несколько моментов, но Латышонок спасал. Основное время закончилось 0:0.
В серии пенальти тренер «Спартака» Карседо заменил Максименко на Помазуна специально для ударов. «Зенит» начал уверенно, но затем Мостовой не забил, а Латышонок отбил удар Угальде. Команды долго били без промахов, пока Кондаков не пробил на удобной высоте для Помазуна, который спас. Затем Ву реализовал свой пенальти, отправив мяч в верхний угол, и принёс «Спартаку» победу 7:6.
«Зенит» создал достаточно моментов, чтобы выиграть в основное время, но подвела реализация. «Спартак» провёл уверенный выездной матч, выдержал давление и прервал 14-летнюю серию без побед в Петербурге. Последний раз красно-белые побеждали здесь 6 мая 2012 года со счётом 3:2. Теперь «Зенит» вылетел из Кубка России, и Сергей Семак может сосредоточиться на чемпионате, где впереди важный матч с «Краснодаром».
