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.
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.
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.
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