К матчу 20-го тура РПЛ «Зенит» и «Ростов» подходили не в лучшем расположении духа. Обе команды неудачно начали весенний отрезок и уступили в 1/8 финала Кубка России «Арсеналу» и «Ахмату» соответственно. Поражение стало болезненным для обеих команд, но по разным причинам. Если подопечные Сергея Семака упустили возможность пополнить клубный музей очередным трофеем, то их оппоненты — гарантировать себе путёвку в Лигу Европы. В следующем сезоне в данном турнире страну представит лишь один коллектив, причём приоритет будет именно у обладателя национального кубка.
Победа в принципиальном противостоянии не только позволяла почувствовать уверенность, но и укрепить положение в турнирной таблице. «Ростов» мог ворваться в топ-4, а «Зенит» — сохранить комфортный гандикап от ближайших преследователей. После 19 туров ЦСКА и «Спартак» уступали четыре и шесть очков соответственно и при удачном стечении обстоятельств могли вплотную подобраться к действующим чемпионам.
К очному противостоянию соперники подошли не в идеальных составах. Малком отсутствовал из-за травмы колена, а Сердар Азмун и Вильмар Барриос совсем недавно восстановились от повреждений, поэтому пребывали не в идеальной форме. При этом «Ростов» был в ещё более сложном положении. Павел Мамаев и Кэнто Хасимото находились в лазарете, а Роман Ерёменко принял решение покинуть клуб. Полузащитник расторг контракт по семейным обстоятельствам и вернулся в Финляндию. В предматчевом интервью сам Карпин признал, что для него решение футболиста стало шоком, и назвал потерей уход хавбека.
Наверняка многие ожидали, что разозлённый провалом в Кубке и оттого сверхмотивированный «Зенит» уверенно обыграет «Ростов». Но первый тайм продемонстрировал, что подобные предположения были ошибочны. Хозяева хоть и смотрелись чуть увереннее, но о серьёзном превосходстве речи не шло. Подопечные Карпина не закрывались и на равных сражались с действующими чемпионами. Особенно усердствовал Матиас Норманн, за первые 17 минут успевший дважды вступить в конфронтацию с оппонентами. Сначала он жёстко сыграл против Артёма Дзюбы, за что получил толчок плечом от россиянина, а затем придержал Вендела. На поле чуть было не завязалась потасовка, а арбитру Алексею Матюнину пришлось успокаивать норвежца жёлтой карточкой.
«Зенит» чаще бил по воротам и по опасным моментам тоже был впереди. Сначала Азмун эффектно пробил с лёта после розыгрыша стандарта, а затем исполнил опасный прострел на Дзюбу. Но лидеру хозяев не хватило скорости. Уже во второй половине тайма «Ростов» стал чаще оказываться на чужой половине поля, а за минуту до его окончания забил крайне курьёзный мяч.
Изначально эпизод не предвещал ничего опасного. Алексей Козлов головой сделал скидку на Соу, но тот не смог толком подстроиться под передачу. Мяч поскакал за лицевую линию, но Михаил Кержаков и Дуглас Сантос не только не дали ему уйти, но и помешали друг другу, вследствие чего снаряд чуть было не оказался в сетке. Бразилец смахнул его с ленточки, но прямо на ногу форварду из Гамбии.
Однако на этом проблемы Кержакова не закончились. Уже на седьмой минуте второго тайма он неудачно оступился при попытке выноса мяча и получил травму, из-за которой был вынужден покинуть поле. На замену вышел Андрей Лунёв, появления которого многие ожидали в старте. При этом долгое время у голкипера практически не было возможности проявить себя.
Причина в том, что на 56-й минуте гости остались в меньшинстве — красную карточку за «фол последней надежды» получил Михаил Осипенко. Защитник жёстко сыграл в подкате против Азмуна неподалёку от штрафной и отправился в подтрибунное помещение. В большинстве хозяева ожидаемо взвинтили темп и принялись давить соперника. За оставшееся время они нанесли 14 ударов, четыре из которых дошли до Сергея Песьякова.
Голкипер «Ростова» неоднократно спасал свою команду, но в период с 73-й по 78-ю минуту пропустил дважды. Сначала Николай Поярков срезал мяч в собственные ворота, а затем эффектную комбинацию завершил Далер Кузяев. Хавбек ворвался в штрафную и пробил в дальний угол. Футболисты «Ростова» были недовольны тем, что несколько секунд назад их противники разыграли стандарт не по свистку, но Матюнин не отреагировал.
Казалось, что «Зенит» спокойно доведёт дело до победы и в четвёртый раз подряд обыграет «Ростов». Но на 89-й минуте своё слово вновь сказал Соу. Форвард софийского ЦСКА подставил ногу под дальний удар Хорена Байрамяна и застал врасплох голкипера действующего чемпиона. В оставшееся время петербуржцы пытались устроить навал на ворота соперника, но тот выстоял и впервые с августа 2017-го увёз очки с «Газпром Арены».