UEFA Europa League Wrap: Quartet go through
Several other clubs, including Borussia Monchengladbach, Everton, Sevilla and Tottenham, also won to leave themselves in commanding positions with two games to play.
Kevin Kuranyi came off the bench to score Dinamo's only goal against Estoril, maintaining the Russian club's 100 per cent record in Group E and putting them nine points clear of their third-placed opponents.
Estoril find themselves four points behind PSV, who twice came from behind to win 3-2 at Panathinaikos thanks to goals from Memphis Depay, Luuk de Jong and Georginio Wijnaldum.
Metalist Kharkiv remain rooted to the bottom of Group L after a fourth successive defeat, but they at least had something to cheer in Warsaw when Vasyl Kobin's sublime overhead kick gave them the lead.
However, hosts Legia hit back to win 2-1 and seal their last-32 spot by keeping up their perfect record.
Trabzonspor drew 1-1 at Lokeren and remain three points above the Belgians in the battle for Group L's runners-up spot.
And a superb, last-gasp Manuel Pasqual free-kick denied PAOK victory in Florence and propelled Fiorentina through from Group K.
Salzburg cruised through from Group D with a 5-1 success at Dinamo Zagreb, with Jonathan Soriano's hat-trick including a majestic chip. Celtic are close to joining Salzburg in the last 32, as they claimed a 1-1 draw at Astra Giurgiu.
Lior Refaelov's treble inspired Club Brugge to a surprising 4-0 triumph at Copenhagen in Group B, while HJK upset Torino 2-1 in Helsinki in that pool's other game.
Napoli's Jonathan de Guzman also notched a hat-trick as Rafael Benitez's men sunk Young Boys 3-0 in Group I.
The Serie A club remain joint top of the pool with Sparta Prague, who thrashed Slovan Bratislava 4-0, with Young Boys three points back in third.
Everton moved to the cusp of qualification for the last 32 with a comprehensive 3-0 victory over Lille in Group H, while Wolfsburg remain a point behind the Premier League outfit at the top of the pool after hammering Krasnodar 5-1.
Besiktas and Tottenham both recorded 2-1 victories - at home to Partizan and away to Asteras Tripolis respectively - to move four points clear at the top of Group C.
Villarreal lost 3-2 at FC Zurich, allowing Borussia Monchengladbach, who won 2-0 away to Apollon Limassol, to replace them at the Group A summit.
Inter were held 1-1 at Saint-Etienne in Group F, and Dnipro won 2-1 at Qarabag in the pool's other game.
Elsewhere, Sevilla stayed in pole position in Group G with a 3-1 defeat of Standard Liege, Jose Reyes netting the pick of the goals following a breathtaking passing move, and Feyenoord are now second after beating Rijeka 2-0.