Two early goals from the visitors left the Russians on the brink of European elimination, but the hosts showed composure to wipe our their deficit and claim a precious point
The visitors shocked the hosts to race into a two-goal lead with no more than 10 minutes played, with Diego Buonanotte and Sebastian Fernandez handing their side an early advantage.
A romping start to the second half from the hosts saw them grab a deserved lifeline courtesy of a Danny finish and the St Petersburg side completed a deserved comeback late on when Viktor Fayzulin emphatically rifled home an emphatic.
With Zenit playing to salvage their European hopes and Malaga fielding a host of fringe players, the match began in dynamic fashion. Both sides vied to dictate the tempo of the match, but it was the visitors who drew the first blood in the eighth minute.
Seba raced down the right flank on a Malaga counterattack before whipping an inviting low delivery across the penalty area. Buonanotte calmly latched on to the pass, taking a touch before rifling an unstoppable shot past Vyacheslav Malafeev.
The keeper was spared no blushes moments later, however, as the hosts surprisingly found themselves two down. Calamitous communication between Malafeev and Bruno Alves allowed Roque Santa Cruz to pick up the ball yards from the goal. The Paraguayan picked out Fernandez, who curled a well-placed effort past the scrambling Malafeev.
Zenit maintained their vigour, however, and had a strong appeal for a penalty from Hulk turned down shortly after the visitors doubled their lead. The Brazilian was again threatening minutes later, curling a promising free kick inches past Caballero's post.
The hosts nearly halved their deficit in the 24th minute, when Nicolas Lombaerts was allowed to volley at goal just a few yards out. The Belgian's effort rocketed off the crossbar, though, much to the frustration of his team-mates. Danny then spurned a glorious chance to pull his side back into the tie, after a powerful run and sumptuous pass from Hulk had put the midfielder in the clear.
Zenit continued to probe the Malaga back line, but failed to produce clear-cut opportunities. Jeremy Toulalan protected his back four with confidence, but allowed Alex Witsel to volley from range as half-time approached. The Belgian's effort was wayward however, and the visitors went into the break good value for their two-goal lead.
The hosts came storming out of the interval, and wasted no time clawing their way back into the tie. Danny did well to control a Tomas Hubocan delivery, and finished coolly into the far corner on the half-volley.
Zenit continued to stride forward and the Brazilian nearly leveled matters in the 50th minute, only to be denied by Caballero. Aleksandr Kerzhakov then should have made it two for his side after he rounded the stopper to put himself in front of an open goal, but could only hit the side-netting as the home fans looked on in disbelief.
Malaga were made to hang on to their lead as Zenit seized their penalty area, but defending in numbers allowed the Spaniards to maintain their slim lead. A rare second-half chance for the visitors from a set piece nearly restored their two-goal lead, but Malafeev was on hand to tip Duda's curling effort past the post.
Kerzhakov spurned a second glorious chance with 20 minutes to play, as the Russian's poor contact off a Witsel delivery allowed a stranded Caballero to breathe a sigh of relief.
The hosts continued to hassle the Malaga midfield, and eventually found a deserved equaliser in the 86th minute. A goal-line scramble saw Malaga parry the ball away from their net, but substitute Fayzulin fired home the subsequent rebound.
Zenit went in search of a late winner as injury time loomed, but were denied by resilient defending from Malaga. The Spaniards consequently seal their status as group winners, while the hosts will hope for results elsewhere to go their way as they go in search of a last-16 berth.