Uruguay left Fiji on the brink of exiting the Rugby World Cup at the pool stage as they pulled off a memorable win in Kamaishi.
In a frantic first half, Fiji were left stunned as Uruguay came from behind to lead through tries from Santiago Arata, Manuel Diana and Juan Manuel Cat.
Api Ratuniyarawa reduced the deficit for Fiji while Nikola Matawalu touched down to give them a losing bonus point.
Fiji remain fourth in Pool D but languish behind Wales and Australia.
Fiji came into the game off the back of a defeat by Australia in their first match of the tournament, but they started comfortably in Kamaishi as Mesulame Dolokoto crossed at the corner early on.
A win would have got their tournament back on track and they led again through Eroni Mawi after Arata quickly responded for Uruguay, but the Fijians were stunned by a resilient Los Teros side.
Uruguay, who were playing their first match of this year's tournament, seemed unfazed by Fiji and kept them frustrated as they comfortably led most of the match.
Felipe Berchesi's penalty just before the break put Uruguay 12 points ahead and left Fiji with a mountain to climb to avoid a second successive defeat.
Fiji could have clawed down the gap had Josh Matavesi's kicking been on target, however the Newcastle Falcons fly-half missed two conversions and a second-half penalty before Ben Volavola missed the extras from Matawalu's score.
A crucial tie against Georgia on Thursday, 3 October (06:15 BST) now awaits Fiji, whereas Uruguay face Australia in Oita on Saturday, 5 October (06:15 BST).
Uruguay captain Juan Manuel Gaminara:
"I'm really proud of my country. We're not the biggest, we're not the tallest, but we came here to win.
"We've been preparing for this for four years so I'm really proud.
"We've been working since we qualified on this and we never take anything for granted and you saw the passion. It's inside all of us and we had to go there and fetch it today and bring it through."
Fiji coach John McKee:
"You have to pay tribute to Uruguay for the way they played with the attitude and approach to the game.
"They got a great result. For us, we were off the pace and critical errors gifted them tries and we didn't have the mental toughness to get back into the game.
"They scored three tries off our errors and we were focusing too much on keeping the ball and not turning it over.
"We have to recoup now as we've got Georgia in eight days time and it's a massive game for us."
Fiji: Veitokani; Nakosi, Radrada, Vatubua, Goneva; J Matavesi, Seniloli; Mawi, Dolokoto; Saulo, Ratuva, Ratuniyarawa, Waqaniburotu (capt), Voka, Nakarawa.
Replacements: Vugakoto, Ma'afu, Atalifo, Cavubati, S Matavesi Matawalu, Volavola, Botia.
Uruguay: Mieres; Freitas, Cat, Vilaseca, Silva; Berchesi, Arata; Sanguinetti, Kessler, Arbelo, Dotti, Leindeker, Gaminara (capt), Civetta, Diana.
Replacements: Pujadas, Gattas, Rombys, Lamanna, J Ormaechea, A Ormaechea, Etcheverry, Inciarte.
Referee: Pascal Gauzere (Fra).