As oito equipes foram divididas em dois grupos com quatro, nos quais as duas melhores avançavam à fase semifinal. Os times se enfrentaram entre si em cada grupo, em turno e returno, e as fases mata-mata também seriam em jogos de ida e volta. Curiosamente, ambos os finalistas se encontraram no mesmo grupo na fase inicial.[2]
Na partida de ida, realizada em São Januário, o Vasco saiu na frente já aos 16 do primeiro tempo, com cabeceio do capitão Mauro Galvão, após cruzamento em falta de Juninho. Logo em seguida, com 20 minutos, Alessandro empatou também de cabeça depois de levantamento em cobrança de falta de Ânderson. No segundo tempo, uma expulsão para cada lado: o zagueiro Sandro após falta dura em Ramon Menezes, e o volante Nasa por excesso de faltas, receberam o segundo cartão amarelo. Aos 20 minutos, Juninho Pernambucano marcou um golaço de falta para recolocar o cruzmatino na frente. Seis minutos depois, em contra-ataque iniciado por Mauro Galvão, Zezinho driblou o goleiro e fechou o 3–1 no placar.[4][5]
No confronto de volta, no estádio do Morumbi, o lateral Zé Maria abriu o placar para o Vasco da Gama já nos acréscimos da primeira etapa, em cobrança de falta. Na volta do intervalo, logo aos 30 segundos, o Alessandro Cambalhota empatou a partida com um belo chute de fora da área, após jogada individual. Aos 29 minutos, Juninho Pernambucano tabelou com Luizão, invadiu a área e bateu forte no alto, para marcar o gol do tricampeonato do Torneio Rio-São Paulo.[6][7]
↑Fluminense e Vasco não chegaram a um acordo em relação ao local da partida. Inicialmente encerrado como WO, o jogo ficou considerado como "não realizado".[3]