Peru have knocked 15-time winners Uruguay out of the 2019 Copa America with a penalty shootout victory following a goalless quarter-final in Salvador.
La Blanquirroja lost 5-0 to Brazil in their final group match but still progressed through to the last eight as one of the best third-placed finishers.
After riding their luck in the 90 minutes, with Uruguay having three goals ruled out for offside and missing two clear-cut opportunities, Peru came out on top 5-4 in the shootout.
Luis Suarez missed the only spot kick, meaning that Ricardo Gareca's side will take on reigning champions Chile for a place in the final.
Suarez picked out the roof of the net with a difficult headed chance and then played a big part in the only real chance of the first half.
The Barcelona striker wriggled away from a couple of men, tested Pedro Gallese down low and the loose ball fell perfectly for Edinson Cavani, who blazed it over the bar from five yards.
Uruguay enjoyed the better of things in the opening 45 minutes but could not find a way through, with Giorgian de Arrascaeta having a goal ruled out half an hour in because of an offside infringement against Nahitan Nandez.
Peru's best moments before half time came whenever Paolo Guerrero was on the ball, but some brilliant defending from Jose Gimenez denied the veteran striker a clean shot at goal 45 minutes in.
Gallese dealt with Federico Valverde's long-range free kick early in the second period and Diego Godin failed to find the target from seven yards as another big chance came and went for Uruguay.
Oscar Tabarez's frustration was clear to see on the hour mark when Cavani curled the ball around Gallese, only for his celebrations to be cut short by the offside flag.
The third disallowed goal came a little over 10 minutes later as Suarez ghosted in front of his man and prodded Martin Caceres's cross into the net, but he was marginally offside.
That was as good as things got La Celeste as they were forced all the way to penalties.
Suarez missed the very first spot kick and Peru went on to convert all five of theirs to set up a semi-final with Chile, also penalty-shootout victors against Colombia, in Porto Alegre on Thursday.
URUGUAY (4-4-2): Muslera; Gonzalez, Gimenez, Godin, Caceres; Nandez (Torreira 57'), Bentancur, Valverde (Stuani 97'), De Arrascaeta; Suarez, Cavani
PERU (4-2-3-1): Gallese; Advincula, Abram, Zambrano, Trauco; Yotun, Tapia; Carrillo (Gonzales 75'), Cueva (Ruidiaz 85'), Flores; Guerrero