Jon Parkin scored both Hull goals in the first 10 minutes but Barnsley started their comeback through Michael McIndoe on 45 minutes and then went on to record victory with goals from Marc Richards on 48 minutes and Paul Hayes on 73.
Hayes nearly put his side in the lead early on but he saw his effort from 15 yards superbly cleared off the line by Andy Dawson.
Hull took the lead just seconds later with six minutes played as Craig Fagan raced down the right into the box and put in a low cross and Parkin slid the ball into the net past goalkeeper Nick Colgan.
Hull then doubled the lead three minutes later as keeper Colgan was left stranded after a collision with Parkin in the air and the giant Hull frontman turned the ball into the net with Paul Reid getting the last touch in an attempt to clear.
The home side came close to going three up as Parkin nearly sealed his hat-trick but his lob from inside the area floated just over the bar.
Barnsley got one back on the stroke of half time as Richards crossed the ball from the right and McIndoe managed to turn it goalwards.
Boaz Myhill got a hand to the ball but it agonisingly rolled into the bottom left corner.
As soon as the second half started, Barnsley went searching for the equaliser and found it on 48 minutes as a McIndoe header came back off the inside of the posts and rebounded off the oncoming Richards to make the score 2-2.
The Tigers nearly found themselves back in front through Craig Fagan but he couldn't convert from inside the area.
Barnsley continued to push forward and went in front on 72 minutes through Hayes as Myhill dropped a looping ball across the box and Hayes was left to smash the ball home from five yards.