The Hoops led 1-0 from the first leg at Parkhead last week but were pegged back in the tie after just seven minutes played at the Krestovsky Stadium.
Shortly after the restart, Mikael Lustig failed to cut out a pass to Aleksandr Kokorin, who was effectively put clean through on goal, but in the end his finish was weak, though the tone of the night was very much set.
On 26 minutes, Roberto Mancini's charges doubled their lead as Daler Kuzyaev tried his luck with a ferocious 25-yard effort and Dorus de Vries misjudged the trajectory as the ball bulged into the net.
The tie was eventually killed off on the hour when former Chelsea defender Ivanovic whipped a low ball across the face of the Celtic goal, where Kokorin was on hand to slot home from point-blank range.
ZENIT ST PETERSBURG (4-3-3): Lunev; Ivanovic (Smolnikov 87'), Mevlja, Mammana, Criscito; Kranevitter, Maksimovic, Kuzyaev; Rigoni (Driussi 84'), Kokorin, Zabolotny (Erokhin 76')
CELTIC (5-4-1): De Vries; Forrest (Musonda 71'), Lustig, Simunovic, Ajer, Tierney; Kouassi (Rogic 45')), McGregor (Sinclair 62'), Brown, Ntcham; Dembele