Leading 2-0 from the first leg, Zenit was cruising when Hulk scored in the 19th minute goal, but Suarez struck twice with stunning free kicks either side of Joe Allen's close-range finish as Liverpool threatened an unlikely victory.
On a tense night for English clubs, Chelsea was spared extra time against Sparta Prague when Eden Hazard's late goal earned a 1-1 draw at Stamford Bridge, and a 2-1 aggregate win.
Tottenham got a superb 90th-minute goal from Mousa Dembele to salvage a 1-1 draw in Lyon and advance 3-2 on aggregate.
Inter Milan eased past Cluj, 3-0 in Romania and 5-0 on aggregate, and defending champion Atletico Madrid was eliminated by Rubin Kazan despite winning in Moscow.
Zenit and Rubin were joined by Anzhi Makhachkala as Russia mounts a strong challenge in a last-16 lineup featuring teams from 11 different countries. Anzhi drew 1-1 at Hannover, and advanced 4-2 on aggregate.
Also advancing were Basel, Benfica, Bordeaux, Fenerbahce, Lazio, Levante, Newcastle, Stuttgart and Viktoria Plzen. The Czech Republic side's 2-0 win at home to Napoli completed a 5-0 aggregate score against the second-placed team in Serie A.
In the only match not settled in regulation time, Steaua Bucharest beat Ajax 4-2 in a penalty shootout in Romania after the teams traded 2-0 home wins.
Liverpool manager Brendan Rodgers said he was "bitterly disappointed" not to get a decisive fourth goal in a pulsating final half hour at Anfield.
"We were incredible tonight," Rodgers said. "At 3-0 you might have thought the tie was over and done with. I think the team showed their real character and quality."
Suarez first fired a 27th-minute free kick through the Zenit defensive wall, and Allen lifted Liverpool by pouncing on a rebound from his own saved header in the 43rd.
Better was to come in the 59th when Suarez curled a right-foot free kick from 30 metres (yards) just inside the right post.
Liverpool pounded the Zenit defence without finding a winning goal, and Hulk was denied a clincher by Pepe Reina's diving stop low to his right in the 73rd.
Champions League holder Chelsea trailed to David Lafata's neat finish in the 17th until Hazard sent the English team through to face Steaua in the last 16. Defenders Iasmin Latovlevici and Vlad Chiriches got Steaua's goals against Ajax.
In France, the drama unfolded as national greats Michel Platini, the UEFA president, and Zinedine Zidane watched English visitors Tottenham survive a tough test.
Lyon led in the 17th when Maxime Gonalons exploited poor marking to connect with a header at the near post. In the 55th, Clement Grenier was denied by a reaction save from Tottenham goalkeeper Brad Friedel.
Gareth Bale, who scored two breathtaking free kicks in the first leg, forced Lyon 'keeper Remy Vercoutre to make two unsteady saves with powerful efforts midway through the second half.
Lyon was content protecting its lead when Dembele powered through a challenge and sent a low, left-foot shot zipping past Vercoutre's dive.
Inter outclassed Cruj, with two first-half goals from Colombian midfielder Fredy Guarin and an 89th-minute shot from substitute Marco Benassi.
Atletico, beaten 2-0 at home by Rubin, rested several regulars for the long trip to Russia, though won in freezing temperatures on Radamel Falcao's 84th-minute goal. Rubin captain Cesar Navas was sent off in the 89th for fouling the Colombian forward.
Lazio's 2-0 win against Borussia Moenchengladbach was more comfortable than their wild 3-3 draw in Germany last week. The Italians got goals from Antonio Candreva in the 10th and midfielder Alvaro Gonzalez in the 33rd. Lazio next faces Stuttgart which was rewarded for winning in Belgium against Genk, 2-0 on the night and 3-1 on aggregate.
Newcastle forward Shola Ameobi's 64th-minute penalty was the only goal over two legs against Metalist Kharkiv, as two Ukrainian sides went out despite playing at home.
Dnipro Dnipropetrovsk's 1-1 draw with Basel meant the Swiss champion advanced 3-1 on aggregate. Both teams scored from second-half penalties — Yevhen Seleznyov and Fabian Schaer, respectively — and finished with 10 men. Basel will face Zenit.
Dynamo Kyiv was the third Ukrainian team to exit, 2-1 on aggregate against Bordeaux which won 1-0. Chieck Diabate scored just before halftime.
Benfica eliminated Bayer Leverkusen 3-1 on aggregate after a 2-1 win in Lisbon. Ola John and Nemanja Matic got the Portuguese side's goals.
Fenerbahce overcame playing at home in an empty stadium, ordered by UEFA after previous fan violence, to beat BATE Borisov 1-0 after a goalless draw last week in Belarus. The Turkish team advanced thanks to a penalty by midfielder Cristian in first-half stoppage time. Earlier, BATE defender Dmitri Baga was sent off for receiving two yellow cards.
Despite the fans' ban, a lit flare was parachuted into the stadium and landed on the pitch.