Torres set Xavi's men on their way to a fourth consecutive top-flight win with a brace before the midway point of the first half, the first of which came from the penalty spot.
Aubameyang added a third before half-time and Puig wrapped up the scoring 15 minutes from full-time with a close-range finish.
The Blaugrana, who are 12 points adrift of leader Real Madrid, are level on points with fourth-placed Atletico Madrid, but have a game in hand on Diego Simeone's side.
Barca went ahead in the 14th minute, Torres stroking home from the penalty spot after Gavi had been brought down in the area by Nacho Vidal.
Torres scored his second seven minutes later, the Spain international coolly sliding the ball through the legs of Sergio Herrera after latching onto Ousmane Dembele's superb pass.
Dembele was again the provider for Barca's third in the 27th minute, with Aubameyang getting in front of his marker to prod home the France international's cross from close range.
Dembele and Aubameyang both went close to adding a fourth as Barca picked up where it left off at the start of the second period, while Gerard Pique saw an effort ruled out for offside.
Herrera denied the excellent Dembele in the 70th minute, before Puig scored his first goal of the season two minutes after replacing Pedri, rounding Herrera and slotting in after the Osasuna goalkeeper had kept out his initial effort.