The McLaren junior driver took an early lead after the start, building up a gap of 2.5 seconds before da Costa started to chip away at his advantage.
The safety car came out after Nico Muller (Draco) and Yann Cunha (AV ) collided at Fagnes to give Red Bull protégé da Costa a chance to reset the gap, but Magnussen did a solid job at the restart to hold the position – and from then 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 but locked a front wheel just a lap after Magnussen also had a lock-up at the same corner.
Da Costa began to drift in the laps that followed as Nigel Melker (Tech 1) - who had charged from 10th on the grid to third - sat on the tail of the lead battle waiting for a chance.
The Portuguese racer did consider an attack into the Bus Stop chicane on the final lap but thought better of it, settling for second as Magnussen extended his championship lead with his second Formula Renault 3.5 win of the season.
“It was a difficult race and I was under pressure from the cars behind me for a long time," Magnussen said. "The safety car stayed out for a long time too and I had to remain focused. Maybe Antonio was faster than me but I managed to keep my head. It was important to win today and obviously I’m very pleased with the result.”
Formula Renault 3.5 Spa results:
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
- Sports & Recreation
- Kevin Magnussen
- Nigel Melker