PSV have 47 points from 22 matches, four ahead of second-placed Ajax Amsterdam who host Roda JC Kerkrade on Sunday when Twente Enschede, third on 42 points, also travel to PEC Zwolle.
Belgian international Dries Mertens converted a 19th-minute penalty to put PSV ahead after he was fouled by Guram Kashia.
Bony levelled from the penalty spot with 13 minutes to go but Georginio Wijnaldum netted his 12th league goal of the season a minute later to restore the lead for the visitors.
Vitesse player Theo Janssen was then sent off for kicking Kevin Strootman before Bony, the league's top scorer, headed his 18th goal of the season with two minutes remaining.
"This leaves a sour taste because we could have taken a big step in the title race," said PSV captain Mark van Bommel.
"We were in control after we restored the lead quickly and then a moment of carelessness in defence spoiled everything."
Vitesse are sixth in the table on 39 points.
Elsewhere, mid-table rivals ADO Den Haag and Heracles Almelo notched home wins over NAC Breda and Willem II Tilburg respectively.
Charlton Vicento and Tjaronn Chery gave ADO a two-goal lead before Rick ten Voorde replied for Breda who had Jens Janse sent off after 65 minutes.
Almelo went behind when Niek Vossebelt scored for Tilburg in the sixth minute but the hosts bounced back in style to win 4-1 thanks to two goals from Thomas Bruns and one apiece by Marko Vejinovic and Lerin Duarte.
- Sports & Recreation
- Georginio Wijnaldum
- Twente Enschede
- Roda JC Kerkrade
- Ajax Amsterdam