El partido comenzaba con los dos equipos tanteándose, sabiendo que conseguir hoy los tres puntos era vital para la clasificación de cualquiera de ambos. Poco destacable había ocurrido hasta que Marega, en el minuto 6, cae lesionado mientras hacía un sprint. A pesar de las evidentes molestias en los isquiotibiales, aguantó hasta el minuto 13 en el campo cuando entró André André en su lugar

Fue en este minuto cuando el Porto ejecutaba un córner que caía en los pies de Danilo Pereira, quien remataba contra un defensor para que Héctor Herrera aprovechara el rechace y anotara el 1-0 en el marcador. Hasta el minuto 21 no llegaría la primera ocasión clara para el Leipzig. Forsberg golpeaba una falta desde larga distancia buscando la escuadra pero José Sá daba el resto para enviar el esférico a córner. Hasta el final de esta parte se vivió un partido de ida y vuelta donde los dos equipos combinaban para intentar llegar al área rival sin éxito, perdiendo el balón en la zona de creación y sin realizar ninguna legada con peligro manifiesto. Destacar que en el minuto 42 Halstenberg veía la primera tarjeta amarilla del partido.

La segunda parte comenzaba con las intenciones del RB Leipzig claras. Se realizaba un doble cambio en el equipo alemán, dando entrada a Klostermann por el amonestado Halstenberg y a Timo Werner por Bruma. Se puede confirmar el acierto en el cambio cuando solo pasados tres minutos de la segunda mitad, el delantero alemán se quedaba solo delante del portero tras un gran balón al espacio de Sabitzer y definía por alto con el interior para reestablecer el empate. Sin embargo, hasta aquí llegarían las alegrías para el RB en este partido, ya que el Porto no le dejaría crecerse tras el tanto. A partir del minuto 50 se establecería el dominio local en el partido que se hubiese traducido en bastantes más goles si no fuera por el central francés Upamecano. El joven defensor frenó todas y cada de las llegadas rivales con maestría en el juego aéreo, rapidez en la cobertura y corpulencia en los emparejamientos individuales. 

Por desgracia para los intereses del cuadro alemán, en el minuto 61 Telles colocaba un centro maravilloso a balón parado que encontraba la cabeza de Danilo Pereira para adelantarse en el marcador. El Porto no bajaba los brazos y no permitía que el contrario se metiese en el partido, pero esta intensidad se traducía, otra vez, en una lesión en los isquios de Corona, sustituído por Maxi Pereira. El Leipzig buscaba reaccionar y entraba Poulsen en lugar de un exhausto Augustin. A partir de aquí, el conjunto portugués se amontonó al borde el área propia para repeler los ataques alemanes y buscar sentenciar en alguna contra. En el minuto 93 así fue, Vincent Aboubakar bajaba un balón, se giraba y metía un espectacular balón al espacio para Maxi Pereira, que después de una galopada desde el mediocampo, definía cruzado para poner el 3-1 definitivo.

Este resultado deja al Porto como segundo con 6 puntos, detrás de un invicto Besiktas que empató hoy y sigue liderando el grupo con 10. Por la parte contraria, el RB Leipzig se queda tercero con 4 puntos y con la necesidad de ganar al equipo turco en casa y a un desconocido y colista Mónaco (2 puntos) en Francia para poder clasificarse. Debido al parejo nivel de estos cuatro equipos, el grupo sigue totalmente abierto y con todos los conjuntos con posibiladedes de meterse en en los octavos de la UEFA Champions League.