The Belgian took the lead on the opening lap from Nico Muller, after both had outdragged slow-starting polesitter Kevin Magnussen off the line when the lights went out.
Following a restart for a multi-car crash at the top of Eau Rouge, Vandoorne controlled the race, while Magnussen pitted early from third in an attempt to jump the top two.
Vandoorne's Fortec team covered that strategy off just right, meaning that when he pitted a few laps later he rejoined just ahead of the championship leader.
As Muller fell out of contention during the stops that allowed Will Stevens into third, and when Magnussen fell away from Vandoorne the Briton challenged for second.
Stevens eventually got by on the approach to Les Combes, taking to the grass on the straight as Magnussen defended.
Magnussen then tried to hang on around the outside on the brakes, but he was forced to cut across the corner and slot in behind Stevens.
Antonio Felix da Costa also jumped Muller during the stops, but he could not get on terms with the leaders and had to turn his focus to keeping the Monaco race winner at bay.
The top five were well clear of the rest of the field, where Carlos Sainz Jr and Nigel Melker - who had a rather embarrassing clash with Tech 1 team-mate Mikhail Aleshin earlier in the race - fought hard for sixth.
Their scrap brought Jazeman Jaafar into the equation, and shortly after Melker found a way into sixth, Sainz and Jaafar collided at Malmedy on the penultimate lap, putting both out.
Vandoorne said: “After yesterday I had to go and score big. I made a great start and got a tow, which allowed me to take the lead on the first lap. I attacked as much as possible to protect my lead, and it’s brilliant to win at home.”
- Sports & Recreation
- Kevin Magnussen
- Nico Muller