Tom Pope squandered an early chance for Vale before Aaron Wilbraham’s sixth goal of the season gave the classy visitors a 13th-minute lead.
Aden Flint headed Luke Freeman’s cross against the bar and Wilbraham reacted first to turn a right-footed shot inside goalkeeper Chris Neal’s right-hand post from three yards.
Vale worked hard to get back into the game for the remainder of the first-half, but failed to extend Bristol goalkeeper Frank Fielding.
Micky Adams’ team had a mountain to climb three minutes after the interval when Flint doubled the visitors’ lead.
The Vale defence failed to deal with Freeman’s left-wing free-kick and Flint headed Wilbraham’s cross into the centre of goal from four yards.
Adams made a triple substitution in the 55th minute in an attempt to turn the tide, but Wilbraham effectively ended the contest when he poached his second goal six minutes later.
The big striker seized on Ryan McGivern’s poor header to round the onrushing Neal and slot the ball into an empty net.