The Welsh international winger hit a low drive past goalkeeper Paul Jones on 24 minutes.
The dismissal of Tykes midfielder Nathan Doyle, just eight minutes later, for a rash challenge on Lee Tomlin ensured the game stayed on a knife edge.
But the Tykes soaked up considerable pressure and Peterborough substitute Emile Sinclair spurned two half chances to equalise late on.
Barnsley: Button, Wiseman, Foster, McNulty, Golbourne, Cotterill, Dawson, Doyle, Done, Gray, Davies. Subs: Lidakevicius, Smith, Higginbotham, Nouble, Collins.
Peterborough: Jones, Rowe, Zakuani, Brisley, Alcock, Boyd, Tomlin, McCann, Frecklington, Barnett, Taylor. Subs: Lewis, Little, Ball, Sinclair, Kearns.
Referee: Andy Haines (Tyne & Wear)
For the best reports and reaction read Sports Monday, free inside your Yorkshire Post newspaper.