The Saints playmaker netted from the penalty spot in first-half stoppage time to level the scores at 1-1, after Nika Katcharava’s early opener.
Things got even better for Serbia after the break, as Aleksandar Mitrović put them in front in the 64th minute, before Mijat Gaćinović wrapped things up late on, with Tadić laying on both goals.
The result means that Tadić and his fellow countrymen have 11 points from their first five qualifying matches and leapfrog Republic of Ireland at the top of Group D at least for a few hours.
Southampton Under-23s defender Richard Bakary was on the losing side with Benin in their friendly away to Mauritania.
The 19-year-old right-back started for his country in Nouakchott, and they appeared to be heading towards a clean sheet throughout much of the evening.
However, a late penalty for the hosts meant they suffered a 1-0 defeat.
Gianluigi Buffon tonight plays his 1000th official football match, as Italy and Albania clash in Palermo.
Taking in spells with the Azzurri and Juventus, whom he still plays for, and his first club Parma, the 39-year-old has reached the 1000-game mark with no plans to stop any time soon.
The goalkeeper has suggested he will not retire until after the 2018 World Cup, but many believe he will keep going until he has finally won a long overdue Champions League trophy.
But, what other players have reached this historic milestone? talkSPORT have dug through all the data, and reveal all 21 footballers with 1000 official matches played…
You can see all the results by clicking the right arrow, above…
Jack Stephens played the full game, while Sam McQueen was an unused substitute, as England Under-21s lost 1-0 away to Germany.
In a result that mirrored that of the senior team on Wednesday night, the Young Lions suffered a narrow friendly defeat
The decisive moment arrived midway through the first half, when Hoffenheim’s Nadiem Amiri struck home from the edge of the box.
Stephens had one of the best opportunities to level the match, as the ball fell to him 12 yards out in the 74th minute, but his effort was saved by keeper Julian Pollersbeck.
The defender’s Saints teammate, McQueen, was an unused substitute, but will be hoping to see some action when the Under-21s visit Denmark on Monday.