Match ends, Crewe Alexandra 1, Barnsley 2.
Barnsley came from behind to hand Crewe back-to-back defeats in League One, avenging their midweek cup defeat.
Billy Waters scored for the second time in a week against the Reds to put the home side ahead with a stunning volley past Adam Davies.
Leroy Lita pulled the visitors level when he tapped in Sam Winnall's cross before Martin Cranie headed in Conor Hourihane's corner.
Crewe sit 20th, while Barnsley rise to 15th after their opening day defeat.
Barnsley manager Danny Wilson:
"If you're going through the game from start to finish, we started the game off brightly.
"I was taken back when they scored the goal, not by the quality, it was a fantastic goal, but it came out of the blue.
"I thought we were pushing ourselves and we were comfortable. We got the ball down and passed it well. We got in the key areas and looked a threat."
- 24LeighSubstituted forGuthrieat 90+1'minutes
- 10InmanSubstituted forMolyneuxat 74'minutes
- 7TurtonSubstituted forHaberat 81'minutes
- 9OliverBooked at 63mins
- 6CranieBooked at 73mins
- 7TreacySubstituted forBreeat 72'minutes
- 9WinnallBooked at 71minsSubstituted forOatesat 89'minutes
- 33LitaSubstituted forDigbyat 78'minutes
- Andy Davies
- Shots on Target
Second Half ends, Crewe Alexandra 1, Barnsley 2.
Foul by Lee Molyneux (Crewe Alexandra).
Reece Brown (Barnsley) wins a free kick on the left wing.
Foul by Matt Tootle (Crewe Alexandra).
Luke Berry (Barnsley) wins a free kick in the defensive half.
Substitution, Crewe Alexandra. Jon Guthrie replaces Greg Leigh.
Substitution, Barnsley. Rhys Oates replaces Sam Winnall.
Attempt missed. Conor Hourihane (Barnsley) left footed shot from the centre of the box misses to the left.
Attempt missed. Matt Tootle (Crewe Alexandra) right footed shot from outside the box is close, but misses to the left from a direct free kick.
Matt Tootle (Crewe Alexandra) wins a free kick in the defensive half.
Foul by Lewin Nyatanga (Barnsley).
Attempt missed. Luke Berry (Barnsley) right footed shot from outside the box is too high.
Substitution, Crewe Alexandra. Marcus Haber replaces Oliver Turton.
Foul by James Bailey (Barnsley).
Jamie Ness (Crewe Alexandra) wins a free kick in the attacking half.
Attempt missed. Lee Molyneux (Crewe Alexandra) right footed shot from outside the box is too high.
Substitution, Barnsley. Paul Digby replaces Leroy Lita.
Goal! Crewe Alexandra 1, Barnsley 2. Martin Cranie (Barnsley) header from very close range to the top right corner. Assisted by Leroy Lita.
Corner, Barnsley. Conceded by George Ray.