Kevin Magnussen held off late-race pressure from Antonio Felix da Costa to take his second Formula Renault 3.5 win of the season at Spa.
The McLaren junior driver had shot away into an early lead after the start, building up a gap of 2.5 seconds before Red Bull-backed da Costa started to chip away at his advantage.
Da Costa was then given a chance to reset the gap when the safety car came out after Nico Muller and Yann Cunha collided at Fagnes.
Magnussen did a good enough job of the restart to hold the position, but from then until the finish the gap was never more than 0.8s.
The closest da Costa came to making a move was at Les Combes on lap 15 of 21, when he had a look to the inside and locked a front wheel just a lap after Magnussen had also had a lock-up at the same corner.
Da Costa drifted away in the laps that followed as an inspired Nigel Melker - who had charged from 10th on the grid to third - sat on the tail of the lead battle waiting for a chance to pounce.
The Portuguese racer considered an attack into the Bus Stop chicane on the final lap but thought better of it, settling for second as DAMS driver Magnussen extended his championship lead with victory.
Behind the top three Arthur Pic took fourth, paying the price for a sluggish restart that allowed Melker to pass him for third.
Marco Sorensen came home fifth thanks to passing Nikolay Martsenko on the restart, while one of the biggest fights on track was between Jazeman Jaafar and Oliver Webb for ninth place.
In the end Jaafar - who fell from third at the start - took the place, while his Carlin team-mate Carlos Huertas pounced on Webb for the final point in the closing stages.
Results - 21 laps:
Pos Driver Team Time/Gap
1. Kevin Magnussen DAMS 47m33.742s
2. Antonio Felix da Costa Arden Caterham + 0.647s
3. Nigel Melker Tech 1 + 1.282s
4. Arthur Pic AV + 4.358s
5. Marco Sorensen Lotus + 5.868s
6. Nikolay Martsenko Pons + 6.373s
7. Andre Negrao Draco + 7.555s
8. Daniil Move Comtec + 8.951s
9. Jazeman Jaafar Carlin + 17.604s
10. Carlos Huertas Carlin + 18.019s
11. Christopher Zanella ISR + 18.748s
12. Oliver Webb Fortec + 19.507s
13. Stoffel Vandoorne Fortec + 23.044s
14. Mikhail Aleshin Tech 1 + 25.181s
15. Norman Nato DAMS + 25.799s
16. Pietro Fantin Arden Caterham + 26.316s
17. Matias Laine P1/Strakka + 26.931s
18. Sergey Sirotkin ISR + 27.957s
19. Zoel Amberg Pons + 31.154s
20. Marlon Stockinger Lotus + 31.722s
21. Mihai Marinescu Zeta + 40.513s
22. Lucas Foresti Comtec + 1 lap
Will Stevens P1/Strakka 16 laps
Yann Cunha AV 6 laps
Nico Muller Draco 6 laps
Carlos Sainz Jr Zeta 1 lap