In the early kickoff, Shakhter Karagandy upset former European champions Celtic 2-0 to stay on course to become the first Kazakh side to reach the group stage while Czech champions Viktoria Plzen beat Slovenia's Maribor 3-1 at home.
Mexican Carlos Vela laid on Sociedad's opener in the 17th minute with a fine cross from the left which Frenchman Antoine Griezmann, playing against his boyhood club Lyon, volleyed into the net with a bicycle kick from the edge of the box.
Swiss forward Haris Seferovic increased the Spanish side's lead five minutes after the break with another fine shot inside goalkeeper Anthony Lopes's near post.
Lyon defender Milan Bisevac was sent off after fouling Vela just outside the box in the 75th to earn a second booking.
Milan have a slight advantage after their draw at PSV in a clash between former European Cup winners.
Italy striker Stephan El Shaarawy headed the opener with Tim Matavz equalising for PSV from a rebound after Christian Abbiati failed to hold Jeffrey Bruma's scorching drive on the hour.
Zenit virtually sealed their berth in the lucrative group stage with their thumping victory at the Dragao, home of Hulk's former club Porto, with modest Pacos facing an uphill struggle to get back into the tie in next week's second leg in Russia.
Hulk missed a return to Porto after suffering an injury during a Russian league game at the weekend but he was hardly missed as defensive midfielder Shirokov provided the finishing.
Shirokov put Zenit ahead in the 27th minute, running on to Portuguese winger Danny's cross, but the hosts equalised just before the hour mark through Andre Leao at a corner.
Shirokov soon restored Zenit's lead from Danny's corner and they went 3-1 up five minutes from time thanks to an own goal by Pacos goalkeeper Matias Degra who deflected the ball into the net when a free kick by Aleksandr Kerzhakov came off the bar.
Shirokov completed his treble in the final minute.
Shakhter stunned Celtic with opportunist goals from strikers Andrei Finonchenko and Sergei Khizhnichenko.
The Kazakh side grabbed an 11th-minute lead when towering Bosnian defender Nikola Vasiljevic headed on a long throw for Finonchenko to poke into the net from three metres.
The Scots were again caught cold in the 77th minute, when a deflected Gediminas Vicius shot fell kindly for Khizhnichenko to head home from close range.
Marian Cisovsky and Vladimir Darida gave Viktoria a two-goal lead inside the hour with defender Ales Mejac pulling one back for Maribor in the 66th with a shot into the top corner.
However, Viktoria restored a two-goal advantage a minute from time through Michal Duris.
There are five more Champions League playoff first legs on Wednesday with the return matches scheduled for next week.