Porto had never beaten Juve in five European matches, but the Primeira Liga champion made it a miserable return to his homeland for Cristiano Ronaldo on Thursday (AEDT).
Ronaldo was starved of service as Sergio Conceicao's side showed a far bigger appetite for the fight at Estadio do Dragao, with Taremi gifted a first Champions League goal by a terrible mistake from Rodrigo Bentancur.
Moussa Marega doubled Porto's lead right at the start of the second half, but Federico Chiesa struck eight minutes from time to leave the tie well poised ahead of the second leg on March 9.
Bentancur made it a nightmare start for Juve, failing to get enough on his back pass and allowing Taremi to slide in ahead of Wojciech Szczesny for his fourth goal in as many games.
That early blow failed to jolt Juve into life and Matthijs de Ligt deflected Sergio Oliveira's shot wide after a sloppy pass from a shaky Szczesny.
The Bianconeri lost captain Giorgio Chiellini, who was replaced by Merih Demiral, to a calf injury before Agustin Marchesin was finally called into action, diving to his left to keep out Adrien Rabiot's acrobatic attempt.
Juve was caught napping again at the start of the second half, when Marega's left-footed strike beat Szczesny at his near post after Wilson Manafa cut the ball back at the end of a marauding run.
The impressive Oliveira came close to adding a third Porto goal when his strike was saved by Szczesny, while Bentancur rifled just over the crossbar at the other end in a rare moment of concern for Conceicao's well-drilled side.
Porto looked rock solid but its run of five consecutive Champions League clean sheets ended when Chiesa converted Rabiot's cutback and Marchesin denied Alvaro Morata an equaliser soon after.
Ronaldo wanted a penalty for a challenge from Zaidu Sanusi but referee Carlos del Cerro Grande and the VAR saw it otherwise as Porto held on to their slender advantage.