O início da partida foi praticamente um exercício de ataque contra defesa. O São Paulo se sentiu confortável no sistema ofensivo para buscar um espaço na zaga adversária, enquanto o Coxa abriu mão de avançar. A primeira oportunidade dos donos da casa saiu em jogada individual de Dagoberto, que passou pelo zagueiro na intermediária e finalizou por cima do gol.
Instantes depois, Adrián González rolou na direita para Dagoberto finalizar perto do gol. No lance seguinte, Jorge Wagner avançou pela esquerda e errou o alvo. Depois das oportunidades desperdiçadas, o Tricolor foi recompensado com o gol, aos 23 minutos. A zaga do Coxa falhou e a bola sobrou para Hernanes, que, de dentro da área, limpou a defesa e bateu forte, em cima de Edson Bastos, que não conseguiu defender.
Mesmo depois do gol, o Coritiba continuou com muita dificuldade de responder e seguiu levando sustos. Dagoberto carregou a bola pela esquerda e cruzou na segunda trave, onde apareceu Hugo para cabecear por cima do gol. Nem mesmo em duas cobranças de falta de Marcelinho Paraíba o time paranaense conseguiu contra-atacar, já que a zaga afastou ambas.
A torcida são-paulina vibrou ao ver Rodrigo ser derrubado perto da meia-lua do adversário. Atendendo aos pedidos dos fãs, Rogério Ceni foi para a cobrança, mas frustrou as arquibancadas ao mandar por cima do travessão. Mesmo com um sistema ofensivo ineficiente durante boa parte do primeiro tempo, o Coxa mostrou que o São Paulo não poderia cochilar na defesa.
Antes mesmo do intervalo, a equipe paranaense fez dois gols para virar o placar. Aos 37, Carlinhos Paraíba carregou a bola pela intermediária e, sem ser incomodado, soltou um forte chute. Rogério Ceni espalmou para a área, e Renatinho pegou o rebote para finalizar para as redes.
Logo depois do gol, Ariel sentiu uma contusão e foi substituído por Bruno Batata. Mas a mudança não afetou o Coritiba, que pulou à frente no placar com um gol olímpico, aos 42. Em escanteio pela direita do ataque paranaense, Marcelinho Paraíba cobrou com veneno e viu a bola passar sem desvios até entrar na meta de Ceni. Logo após sofrer o segundo, o São Paulo chegou com perigo, mas Hugo desperdiçou a chance na área.
Para complicar ainda mais a situação do São Paulo, André Dias sentiu uma contusão no joelho direito no último lance do primeiro tempo e ficou nos vestiários durante o intervalo, sendo substituído pelo meia Oscar.
No primeiro lance da etapa complementar, Dagoberto pediu um pênalti, mas o árbitro mandou seguir. Na jogada seguinte, o atacante avançou pela direita e cruzou na medida para Hugo cabecear, mas Edson Bastos se esticou para salvar os visitantes. E o São Paulo continuou exercendo pressão sobre o adversário. Rogério Ceni cobrou falta da intermediária, muito perto do travessão.
O técnico Ney Franco, então, decidiu dar mais movimentação ao seu time, sacando Luciano Amaral para a entrada de Marcos Aurélio. Do outro lado, Ricardo Gomes colocou Washington no lugar de Borges.
E o Tricolor conseguiu igualar a contagem, aos 21 minutos. Oscar recebeu na área, deixou o zagueiro no chão e finalizou. Edson Bastos defendeu, mas Washington apareceu para empurrar o rebote para as redes. Depois do gol, o São Paulo partiu para o ataque com mais afinco (e com Marlos, na vaga de Hugo), mas não conseguiu virar.