Despite the heavy defeat, the Owls only lost one place in the Championship’s play-off zone and the side’s chasing them failed to make up ground, with Cardiff City and Ipswich Town both losing, to ensure Wednesday’s five-point cushion was preserved.
Carvalhal admitted: “It was a day off for us in the Championship. It is a long competition and you get accidents along the way.
“We started strongly, moving the ball well and creating good chances. I think the players thought it was going to be easy and their heads went into the clouds.
“It was hard to understand the first half. After the second goal we lost control of the game and Bristol deserved to be three goals up
“The second half was different. Again they scored from their first attack, but we were more like ourselves, should have had a penalty when Marco Matias was fouled, and kept fighting to the end.”
City, who needed the win in their fight against relegation, took a 10th-minute lead when Lee Tomlin met an Adam Matthews cross from the right with a sweet volley at the far post and the ball found a way in despite the combined efforts of goalkeeper Joe Wildsmith and two defenders on the line.
Wildsmith, a late replacement for Keiren Westwood who was sick during the warm-up, was beaten again three minutes later.
Luke Freeman latched onto a quickly-taken free-kick and picked out Reid for the young midfielder to find the top corner with a right-footed shot from 12 yards.
City were out of sight by the break as Tomlin rifled in a 42nd-minute penalty after being brought down by Liam Palmer. And a second spot-kick on 52 minutes piled on the agony for the visitors.
Reid was tripped by Wildsmith and it was Jonathan Kodjia who netted his 16th goal of the season with a low penalty as Tomlin had been substituted through injury at the break.
Wednesday grabbed a consolation on 61 minutes when substitute Ross Wallace’s left-footed free-kick from 30 yards went in off first the post and then the fingertips of City keeper Richard O’Donnell.
But it was a disappointing trip for the 1,467 fans who made the long journey from Yorkshire and their side could have no complaints.
City boss Lee Johnson said: “It was a fantastic afternoon for us.”
Bristol City: O’Donnell, Matthews, Flint, Baker, Bryan, Smith, Pack, Freeman, Reid (Odemwingie 71), Tomlin (Wagstaff 46), Kodjia (Agard 83). Unused substitutes: Fielding, Little, Golbourne, Pearce.
Sheffield Wednesday: Wildsmith, Palmer, Lees, Turner, Pudil, Lee, Lopez (Lucas Joao 46), Bannan, McGeady (Wallace 46), Forestieri, Nuhiu (Marco Matias 57). Unused substitutes: McGugan, Sasso, Hunt, Price.
Referee: C Breakspear (Surrey).