울산은 경기 초반부터 주도하는 듯했지만, 상하이의 공격도 위협적이었다. 전반 10분 마티아스 바르가스가 슈팅을 때린 게 울산 골대 옆으로 살짝 빠졌다.
위기를 넘긴 불과 1분 뒤, 울산이 결국 실점했다. 빌드업 상황에서 볼을 뺏겼고, 페널티 박스 안으로 달리던 바르가스 쪽으로 볼이 향했다. 바르가스가 드리블로 울산 수비수를 제친 뒤 때린 오른발 슈팅이 골키퍼 가랑이 사이로 빠지면서 0의 균형이 깨졌다.
울산은 맹공을 퍼부었다. 전반 15분 보야니치의 슈팅이 골키퍼 정면으로 향하며 아쉬움을 삼켰다.
하지만 전반 24분 또 한 번 빌드업 실수로 추가 실점했다. 골키퍼 조수혁이 상대 전방 압박을 받았고, 고승범에게 패스했다. 고승범에게도 상대 선수가 빠르게 붙고 있었고, 그는 곧장 패스로 볼을 돌려놨다. 그러나 이 볼이 오스카에게 향했고, 오스카에게 패스를 받은 바르가스가 손쉽게 차 넣었다.
울산은 공격에 무게를 실었다. 전반 27분 고승범이 쇄도하면서 때린 슈팅이 골대 옆으로 빗나갔다. 전반 29분 이청용이 페널티 박스 안으로 드리블하는 과정에서 상대 리앙이 잡아끌었다. 애초 주심은 리앙에게 옐로카드를 꺼냈지만, 비디오판독(VAR) 후 색깔을 빨간색으로 바꿨다. 울산은 이때부터 수적 우위를 점하고 싸웠다.
하지만 전반에는 골망을 가르지 못했고, 후반 시작과 동시에 미드필더 이규성을 빼고 스트라이커 야고를 투입했다.
울산은 교체 카드를 활발히 활용하며 파상 공세를 퍼부었으나 좀체 골문을 열지 못했다.
후반 27분에서야 코너킥 상황에서 이명재가 올린 킥을 주민규가 헤더로 연결해 골망을 출렁이며 추격의 불씨를 살렸다.
그러나 울산은 10분 뒤 앞서 두 골을 내준 바르가스에게 한 골을 더 내줬다. 사실상 경기를 끝내는 골이었다.