The victory at a packed Centenario, Uruguay's third four-goal haul, lifted them into second place in the South American group with 11 points from five matches, one point less than leaders Chile and one more than Argentina.
Uruguay, who had taken a two-goal lead through defender Sebastian Coates and midfielder Maxi Pereira, were pegged back to 2-2 early in the second half after a headed own goal from Diego Godin and a strike by Paolo Guerrero either side of the break.
Diego Forlan missed a good chance to put Uruguay ahead again in the 57th minute but his penalty after a foul on fellow striker Edinson Cavani was saved by Peru goalkeeper Diego Penny.
With quarter of an hour gone, Coates leapt to head a corner goalwards, Penny got a hand to the ball but it hit the ground and spun back with the referee ruling it had just crossed the line despite midfielder Antonio Gonzales's efforts to block it.
Just before the half hour, Uruguay went two up when Pereira netted the rebound after Penny parried a shot from striker Luis Suarez but they went in at halftime 2-1 up when Godin headed into his own net trying to clear a shot from midfielder Yoshimar Yotun.
Guerrero, top scorer at last year's Copa America won by Uruguay, equalised when he brought the ball down with his chest and volleyed past Fernando Muslera.
Rodriguez put Uruguay ahead again just past the hour with a diving header three minutes after coming on and Eguren stretched the lead three minutes into added time.
Suarez will be suspended for Uruguay's next qualifier against Colombia in September after picking up his second booking.