Marcos Tavares opened the scoring for the home side after just ten minutes and Eduardo Berizzo's failed to execute a comeback.
Leipzig's Champions League debut ended in a 2-1 home loss to Group G victor Besiktas on Wednesday.
Vincent Aboubakar struck two first-half goals to spearhead Porto's emphatic 5-2 win over Monaco at the Dragao Stadium on Wednesday and seal their place in the knockout stages.
Few gave Paulo Fonseca's Shakhtar Donetsk much of a chance when they were drawn in the same group as Manchester City and Napoli, but a brilliant group phase, including two victories against what many say are now the strongest sides in England and Italy, saw the Ukrainian team qualify easily, accumulating 12 points from their 6 matches, double the number of 3rd-placed Napoli.More news: Overwatch Winter Wonderland event is back with an exciting game mode
More news: Police release Randy Travis arrest video from 2012
More news: John Lewis to Boycott Civil Rights Museum Opening Due to Trump's Attendance
Just three minutes later, Talisca scored the last goal of the match and the Black Eagles left the field with another three points.
Feyenoord ended Napoli's slim hopes of reaching the last 16 as Jeremiah St Juste's late goal snatched a 2-1 win for the Dutch side.
Leipzig's Stefan Ilsanker was sent off for his second yellow card, then Keita made the breakthrough with three minutes remaining.
But how have some of the potential Premier League players of the future performed in Europe? The match was ten vs. ten for nearly one hour after Porto centre-back Felipe and Monaco's Rachid Ghezzal were sent off after getting into an ugly tussle in the first half. The Italian club's hopes of snatching second place in Group F, however, were hit as Feyenoord fought back to equalise through Nicolai Jorgensen before claiming the dramatic victor and their first points in this year's group stage.