The win saw the Italians top the table on head-to head results, leaving Lionel Messi and Barca to settle for second place on a disappointing night at the Camp Nou.
Ronaldo opened the scoring from penalty spot in the 13th minute after drawing a foul from Ronald Araujo in the box. The Portugal captain then fired low and hard past a diving Marc-Andre ter Stegen to give Juve an early lead.
The goal marked the first time the prolific striker had scored against Barcelona in Champions League play.
McKennie bolstered Juve’s advantage in spectacular fashion seven minutes later when he played a smooth give-and-go with Juan Cuadrado before acrobatically volleying home from the centre of the box.
Ronaldo collected his brace in the 52nd minute after a Clement Lenglet handball was upheld by a VAR review — the former Real Madrid man sending Ter Stegen the wrong way from the penalty spot to finish off a satisfying night.