The Colombian, who was a surprise front-row starter after a heavily disrupted qualifying session in the morning, inherited the lead when pole man Norman Nato went off at the first corner after the safety car pulled in at the start of lap four.
From there Huertas took advantage of the clear track ahead of him cruised away from the field, quickly building a lead over Sergey Sirotkin and Stoffel Vandoorne.
When Vandoorne attacked Sirotkin at the final hairpin on lap 7 - a move that eventually failed - it cost the pair enough time to allow Huertas to stretch his lead to over 10 seconds.
From there he was able to control the race, while Vandoorne dropped back from Sirotkin to give the ISR driver a comfortable second place.
The lead group lost its first member before the cars were even released from behind the safety car, as fourth place starter Arthur Pic broke down on the exit of Turn 1 on lap two.
Behind the top three, Will Stevens fended off Nico Muller to the end for fourth, while Nigel Melker snatched sixth place from Antonio Felix da Costa on the penultimate lap.
Championship leader Kevin Magnussen recovered from 22nd on the grid to take two points in ninth.
1. Carlos Huertas Carlin 33m19.005s
2. Sergey Sirotkin ISR + 11.921s
3. Stoffel Vandoorne Fortec + 16.429s
4. Will Stevens P1 + 24.691s
5. Nico Muller Draco + 26.826s
6. Nigel Melker Tech 1 + 36.735s
7. Antonio F. da Costa Arden Caterham + 42.074s
8. Andre Negrao Draco + 44.125s
9. Kevin Magnussen DAMS + 44.988s
10. Marco Sorensen Lotus + 55.215s
11. Mikhail Aleshin Tech 1 + 1m00.192s
12. Jazeman Jaafar Carlin + 1m00.787s
13. Yann Cunha AV Formula + 1m17.038s
14. Matias Laine P1 + 1m22.401s
15. Daniil Move Comtec + 1m34.292s
16. Lucas Foresti Comtec + 1m36.191s
17. Oliver Webb Fortec + 1m44.026s
18. Pietro Fantin Arden Caterham + 1m45.955s
19. Zoel Amberg Pons + 1m48.671s
20. Norman Nato DAMS + 1m55.868s
21. N.Martsenko Pons + 2m10.822s
22. Matheo Tuscher Zeta Corse + 1 lap