El español Luis Alberto (minuto 16), el bosnio Senad Lulic (73) y Danilo Cataldi (90+4) firmaron los goles del equipo de la capital, mientras que el argentino Paulo Dybala (45) había igualado provisionalmente para la 'Vecchia Signora'.
La segunda amarilla al uruguayo Rodrigo Bentancur en el descuento final hizo que la Juventus terminara con diez hombres.
El Lazio, que el pasado 7 de diciembre ya ganó a la Juventus en la Serie A por idéntico resultado, suma así su quinta Supercopa de Italia e iguala a número de títulos en el palmarés, en la tercera posición, con el Inter de Milán.
'Hemos logrado algo mágico, vencer a la Juventus dos veces en dos semanas es algo increíble', declaró a Rai Sport el técnico del Lazio, Simone Inzaghi.
Los éxitos anteriores del Lazio en esta competición se habían dado en 1998, 2000, 2009 y 2017. En el primero de ellos y en el último había sido también frente a la Juventus, mientras que los otros dos fueron contra el Inter.
Pero sobre todo, el Lazio evitó que la Juventus, que acumula ocho títulos en la ' Supercoppa', se escape más como líder del palmarés histórico del torneo.
El año pasado, la 'Juve', que es además el equipo campeón de las ocho últimas ligas italianas, ya había sido el vencedor de la primera Supercopa nacional disputada en Arabia Saudí, en aquel caso superando en Yeda al Milan (1-0), un éxito que no pudo reeditar en esta ocasión.
La última Supercopa que la Juventus había perdido había sido precisamente ante el Lazio, por 3 a 2 hace dos años en el Olímpico de Roma.
El Lazio está siendo uno de los equipos que mejor están rindiendo en la primera parte de la temporada italiana: es tercero de la Serie A, a seis puntos de Inter de Milán (1º) y Juventus (2º), aunque el equipo romano tiene un partido disputado menos, el que tuvo que aplazar este fin de semana ante el Hellas Verona, ante el que se enfrentará el 5 de febrero.
Este título llega más de medio año después del logrado en la Copa de Italia y consigue mitigar la decepción que supuso para el equipo la reciente eliminación en la fase de grupos de la Europa League.
Cristiano, sin puntería
El primer gol del partido lo consiguió el Lazio, con un pase hacia atrás de Sergej Milinkovic-Savic, que Luis Alberto conectó en las cercanías del punto de penal, sorprendiendo al arquero polaco Wojciech Szczesny en el minuto 16.
El tanto del empate bianconero tardó en llegar hasta casi el descanso, cuando Cristiano Ronaldo envió un potente disparo desde la frontal del área, el arquero del Lazio detuvo sin atajar y el balón rechazado quedó muerto para Dybala (45), que apenas tuvo que empujar a la red.
El jugador argentino conseguía así premio a su labor activa de la primera parte, donde canalizó casi todo el juego ofensivo de los suyos. En el 29 había tenido una gran ocasión, pero su potente disparo se fue fuera por muy poco.
En la segunda mitad, el argentino Joaquín Correa estuvo cerca de volver a adelantar al Lazio en el 67, pero su remate de cabeza, tras ganar en el salto a Aaron Ramsey, se fue ligeramente por encima del larguero.
Cristiano Ronaldo respondió en el 69, con otro potente remate que se perdió fuera por poco.
Lulic, libre de marca en el segundo palo, envió poco después una volea que terminó alojada en las redes de la Juventus (2-1, minuto 73).
A la Juventus le entraron las prisas en el último cuarto de hora, pero la seriedad defensiva del Lazio le bastó a partir de ahí para asegurar terminar su año futbolístico 2019 con una alegría.
El público local en Riad había tomado partido por la Juventus y especialmente por Cristiano Ronaldo, que casi cada vez que tocaba el balón recibía aplausos y era ovacionado.