Watford were troubled by their visitors in the opening exchanges, with attackers Emile Sinclair and Tyrone Barnett in lively form.
Nevertheless, half-time was reached with neither goalkeeper overly extended.
Gianfranco Zola’s Hornets assumed the ascendancy upon the resumption, but recalled forward Fernando Forestieri was wasteful when presented with opportunities.
The closest either side came to breaking the deadlock before Vydra’s late intervention was a strike from Watford’s Nathaniel Chalobah that went behind via the post.
But Kane Ferdinand infringed Daniel Pudil in the 89th minute and Vydra, one of Zola’s sizeable Udinese loan contingent, kept his cool to leave Darren Ferguson’s Posh rooted to the foot of the table and five points from safety.
Lloyd Doyley and Forestieri returned to the Watford starting line-up in place of injured defender Piccoli Neuton and Vydra.
Peterborough were unchanged from the 1-0 home defeat to Nottingham Forest before the international break.
Ferguson’s strugglers came flying out of the blocks with Watford defender Pudil forced to divert an Emile Sinclair cross behind for a corner inside the first 20 seconds, from which Tommy Rowe headed over.
Almen Abdi and Marco Cassetti responded for the home side but their off-target efforts were no more than speculative.
Peterborough striker Tyrone Barnett had a clearer chance midway through the half but headed Mark Little’s cross over Manuel Almunia’s bar.
Fitz Hall might have done better from Forestieri’s corner as half-time approached but chances were proving very hard to come by for Zola’s men.
Ferguson made a defensively-minded change at the interval with Kgosi Ntlhe introduced in favour of Rowe.
Forestieri engineered space in the area but dragged his shot wide of the near post six minutes after the restart.
Watford came agonisingly close to breaking the deadlock as the hour approached when Chalobah fired goalward right-footed from the edge of the box and rattled the post with Posh goalkeeper Robert Olejnik helpless.
Twice more Forestieri was wasteful from close quarters as the visitors were pushed onto the back foot.
But eventually the pressure told and with less than 90 seconds of normal time to play, Ferdinand fouled Pudil and referee Geoff Eltringham pointed to the spot.
Introduced as a 72nd minute replacement for Abdi, Czech striker Vydra fired home a low penalty to send those among the Vicarage Road faithful who had not opted for an early exit into raptures.