Sergei Semak's side built on its 1-1 draw at Lyon in the opening round with a confident performance at Saint Petersburg Stadium, where it had won four of its previous five matches in Europe's top competition.
Benfica arrived with a Champions League away record of six defeats from its last seven trips and did itself no favours when ponderous defending allowed Artem Dzyuba to steal in and score.
With its nose in front, the Russian champion shut up shop and patiently awaited a second opening, which arrived 20 minutes from time when Ruben Dias put through his own net.
Benfica's hopes of a comeback that never looked likely ended 12 minutes from time when Sardar Azmoun rolled in his second goal of this season's competition, with Raul de Tomas' late strike only a consolation.
Just as Benfica seemed to have withstood the hosts' bright start they slipped up trying to play out from the back, Magomed Ozdoev dispossessing Lubomir Fejsa after 21 minutes and teeing up Dzyuba to confidently pick his spot before side-footing past Odisseas Vlachodimos.
Zenit dominated until half-time and Azmoun started the second period with another fast break, stinging Vlachodimos' palms with a rasping angled drive.
Substitute Vyacheslav Karavaev had been on the pitch less than two minutes when he broke down the Zenit right and delivered a low cross that Dias, sliding back to try and clear Benfica's lines, bundled into his own net with his hand.
The visitor continued to leave gaps and Azmoun was only too happy to exploit them, pouncing on Ozdoev's long pass and rounding Vlachodimos before tapping in from close range.
Yordan Osorio gifted Benfica a consolation when his clearance fell to the feet of Raul, who launched a shot into the top corner of the net, but it was too little, too late for Bruno Lage's men.