Perez, who started on the second row for the first time this season, had to do a lot of work to finish a place lower than his grid position in the eventful 43-lap race.
Perez's teammate Nico Hulkenberg could not start the race from 11th on the grid due to loss of power.
"Great drive by Checo Perez to finish 5th. Disappointed that Nico could not start due to a turbo problem. Was looking forward to double points," tweeted team principal Vijay Mallya minutes after the race.
Perez made a great start, moving two places to be second behind poleman Lewis Hamilton on the opening lap.
He had to keep multiple drivers at bay during the course of the race.
On the penultimate lap, Perez was overtaken by Daniil Kvyat who was on fresher tyres on the Red Bull to lie in sixth place with Felipe Massa chasing him fast in the Williams. However, Ferrari's Sebastian Vettel suffered a dramatic tyre blowout while running third, helping Perez gain a place to come home in fifth place.
