Although Fiji outscored them by five tries to three, Los Teros were full value for their win as they were the more disciplined side throughout and held a 24-12 lead at half-time.
Felipe Berchesi was Uruguay's hero as he finished with a 15-point haul after slotting three penalties and three conversions while Santiago Arata, Manuel Diana and Juan Manuel Cat scored tries.
Poor goal-kicking proved costly for Fiji with Josh Matavesi and Ben Volavola missing several shots at goal. In the end, Matavesi only succeeded with one conversion with Mesulame Dolokoto, Eroni Mawi, Api Ratuniyarawa, Nikola Matawalu (2) all crossing the whitewash.
Fiji were fastest out of the blocks and opened the scoring in the eighth minute courtesy of a try from Dolokoto off a well-worked lineout move on Uruguay's five-metre line.
From the set-piece, the ball came out to Leone Nakarawa, who got a pass out to Dolokoto and he dotted down in the corner.
It did not take long for Los Teros to strike back and in the 14th minute German Kessler did well to pounce on a loose ball inside Fiji's half before offloading to Arata, who stepped past three defenders before crossing under the posts.
Midway through the half, Fiji struck back with Mawi's try from close quarters which Matavesi converted but that would be the last time they would score points during the opening period as Los Teros dominated the latter stages of the half.
In the 23rd minute, Diana crossed from close range before Cat scored their third try five minutes later after Rodrigo Silva set him up with a strong run in the build-up.
Berchesi converted both tries and added a penalty in the 38th minute which mean Uruguay were brimming with confidence at the interval.
Fiji came out firing in the second half and were rewarded eight minutes after the restart when Ratuniyarawa dotted down next to the posts after gathering a pass from Tevita Ratuva.
Inexplicably, Matavesi missed the easy shot at goal and shortly afterwards first-choice fly-half Volavola came on as a replacement for Alivereti Veitokani and Volavola would soon take over the goal-kicking duties, but he too would battle off the kicking tee.
On the hour-mark, Berchesi added a penalty which gave his side a 27-17 lead before Matawalu spotted a gap at a ruck close to Uruguay's try-line before crossing for his side's fourth try in the 67th minute.
Volavola failed with the conversion attempt before Berchesi gave his side a vital eight-point lead via another well-taken penalty in the 76th minute.
The Pacific Islanders upped the ante on attack during the game's closing stages and although they were rewarded with another try from Matawalu in injury time, it was not enough to deny Uruguay a famous and deserved win.
For Fiji: Tries: Dolokoto, Mawi, Ratuniyarawa, Matawalu 2 Con: Matavesi
For Uruguay: Tries: Arata, Diana, Cat Cons: Berchesi 3 Pens: Berchesi 3
Fiji: 15 Alivereti Veitokani, 14 Filipo Nakosi, 13 Semi Radradra, 12 Jale Vatubua, 11 Vereniki Goneva, 10 Josh Matavesi, 9 Henry Seniloli, 8 Leone Nakarawa, 7 Mosese Voka, 6 Dominiko Waqaniburotu (c), 5 Api Ratuniyarawa, 4 Tevita Ratuva, 3 Manasa Saulo, 2 Mesulame Dolokoto, 1 Eroni Mawi
Replacements: 16 Tuvere Vugakoto, 17 Campese Ma'afu, 18 Lee-Roy Atalifo, 19 Tevita Cavubati, 20 Samuel Matavesi, 21 Nikola Matawalu, 22 Ben Volavola, 23 Levani Botia
Uruguay: 15 Gaston Mieres, 14 Nicolas Freitas, 13 Juan Manuel Cat, 12 Andres Vilaseca, 11 Rodrigo Silva, 10 Felipe Berchesi, 9 Santiago Arata, 8 Manuel Diana, 7 Santiago Civetta, 6 Juan Manuel Gaminara (c), 5 Manuel Leindekar, 4 Ignacio Dotti, 3 Diego Arbelo, 2 German Kessler, 1 Mateo Sanguinetti
Replacements: 16 Guillermo Pujadas, 17 Facundo Gattas, 18 Juan Pedro Rombys, 19 Franco Lamanna, 20 Juan Diego Ormaechea, 21 Agustin Ormaechea, 22 Felipe Etcheverry, 23 Tomas Inciarte
Referee: Pascal Gaüzère (France)
Assistant Referees: Angus Gardner (Australia), Andrew Brace (Ireland)
TMO: Marius Jonker (South Africa)