Hulkenberg, who started 13th from the grid, made a fantastic start, gaining at least five places by turn two even as Sergio Perez suffered a puncture on the opening lap, which cost the Mexican the chance of scoring points.
"A great result today and realistically sixth was the maximum we could achieve. I made a really good start and jumped a couple of cars away from the line, and then stayed on the inside going into turn one, which turned out to be a good decision," Hulkenberg said.
Force India now have 77 points, 17 more than sixth-placed Lotus, who collected 10 points today with Romain Grosjean and Pastor Maldonado, finishing seventh and eighth respectively.
Perez, who finished 12th, said it was "very disappointing" outcome.
"Unfortunately, my race was an uphill battle from the first corner: I saw Massa going slowly in the centre of the track and had to avoid him, and that's when I got the hit [from Sainz]. We tried to recover and I did all I could to get back into the points, but even our best was not enough," he said.