The home side enjoyed the better of the first half, with Ricardo Fuller dangerous in attack, but the Royals went closest to breaking the deadlock through Royston Drenthe's free-kick, which was saved by Matt Gilks, and Jem Karacan's 18-yard effort that came back off the crossbar.
Gilks then saved at the feet of Adam Le Fondre in the second period but substitute Barkhuizen stole the show with a run and finish on 75 minutes to seal the points for the hosts.
Reading's central midfield pairing of Karacan and Danny Guthrie were struggling against the Tangerines' dominant midfield trio and Paul Ince's side fashioned their best opportunity of the half midway through the opening period.
More top news
Tuesday morning's weather for the west of the region
Tuesday morning's weather for the east of the region
A court has heard how 13 year old Alexander Worth was killed when a high-performance Ferrari F50 crashed on a farm track in Hampshire.