Wilson found the bottom corner with a low drive from the edge of the area after just four minutes.
Marcus Tudgay should have levelled but he was twice denied by Adriano Basso and saw an effort cleared off the line.
The Owls had a penalty appeal waved away and substitute Etienne Esajas saw a free-kick brilliantly saved by Basso.
Bristol City boss Gary Johnson on goalkeeper Adriano Basso:
"He was heroic. He has been out injured but he has come straight back into the side and showed what a good goalkeeper he is. "Chris Weale had done nothing wrong but Adriano was keen to play and he showed his class.
"He has been like that for us for the last 14 months. He is absolutely terrific."
Sheff Wed: Burch, Hinds (Bullen 46), Wood, Simek, Spurr, Whelan, O'Brien (Esajas 55), Watson, Johnson (Sodje 63), Tudgay, Burton.
Subs Not Used: Grant, Lunt.
Booked: Wood.
Bristol City: Basso, Orr, McAllister, Fontaine, Carey, McIndoe, Brian Wilson, Elliott, Sproule (Showunmi 66), Johnson, Trundle (Murray 71), Showunmi (Skuse 78).
Subs Not Used: Weale, Vasko.
Goals: Brian Wilson 4.
Att: 17,559
Ref: Chris Foy (Merseyside).
Bookmark with:
What are these?