He became the fourth different driver to win in the first four rounds of GP2. Behind him Javier Villa impressively kept pace with the leaders to hold second.
The original start was aborted after Borja Garcia, third, and Pastor Maldonado failed to get away. As a result the race length was reduced to 25 laps.
Javier Villa held his lead from pole position at the start with the two ART cars behind him. But Timo Glock quickly passed Mikhail Aleshin for fourth.
Next time around he picked off Bruno Senna with a brilliantly executed pass into Campsa – not ordinarily a passing place. On lap three he took second off Lucas di Grassi and set off after leader Villa.
He caught Villa by lap six and passed him easily into turn one at the start of the following lap.
Christian Bakkerud was still suffering with his back injury and gradually fell down the order before retiring.
Luca Filippi mounted an impressive recovery effort after being eliminated in race one. He passed several cars including team mate Mika Conway, who he almost barged out of the way.
Kazuki Nakajima had also driven impressively from 15th on the grid to hold seventh behind Vitaly Petrov. But he was soon caught by another recovering driver – Giorgio Pantano, up from 23rd.
Aleshin’s strong debut came to an end with nine laps to go when he spun out at the exit of the new chicane and stalled the car.
While Glock stretched away the three behind him were getting closer as Villa’s pace started to drop off. With five laps to go Senna was starting to take looks at di Grassi.
With three laps to go Senna was climbing all over di Grassi’s rear wing, looking down the outside at the Renault and Repsol bends.
Villa and di Grassi were both visibly struggling for grip on the final lap. Out of the final corner di Grassi and Senna ran side by side for the line but the ART driver held the position by 0.3s.
Sergio Jiminez took fifth ahead of Pantano, Nakajima and Pizzonia.