Canos gave Brentford the lead after 18 minutes, firing home from the edge of the box from Ryan Woods' pass.
It was 2-0 before half-time as Vibe scored his ninth goal in 12 league games with a looped header over City goalkeeper Frank Fielding.
The defeat sees the Robins drop to 21st place, a point above the relegation zone, while Brentford move up to 12th.
Lee Johnson's side had moved up to 19th place thanks to back-to-back wins over Wigan and Huddersfield, but Burton's 1-0 win over the Terriers and Nottingham Forest's 1-1 draw with Preston saw them lose ground in the battle to beat the drop.
Led by the in-form attacking trio of Canos, Vibe and Jota, Dean Smith's Brentford have now won five of their past eight Championship matches.
They could have gone ahead after just two minutes when Romaine Sawyers stung Fielding's hands with a swerving 25-yard drive.
However, City nearly took the lead themselves, with Aden Flint's close-range header going wide before Daniel Bentley saved well from his own captain Harlee Dean.
Brentford took control of the match in an eight-minute spell, with Canos finding the net with an angled drive before Vibe reacted quickest to Konstantin Kerschbaumer's flicked lob to double the home side's lead.
Robins striker Bobby Reid struck the side-netting and Matty Taylor drilled wide with the goal gaping late on, but City failed to score for the first time in four games.
Brentford manager Dean Smith told BBC Radio London: "I thought for 70 minutes today we were excellent and played some great football.
"First half we were in complete control and deserved the two goals and should have had more - we had a goal disallowed from a corner when there was nothing wrong with it.
"I saw Bristol City beat Huddersfield. We had to be good and I thought we were."
Bristol City manager Lee Johnson: "Second half we created more but we didn't start anywhere near well enough, and that's disappointing. We simply can't start like that and expect to go and win games."
"The way we've been playing I just didn't see this coming. It's so frustrating because you know we have quality in the team but we didn't hold the ball upfront, our defenders were too deep and I felt sorry for the lads in the middle.
"Once we retained the ball and changed shape at half time we got better, but by then poor defending had left us with too much too do."
Match ends, Brentford 2, Bristol City 0.
Second Half ends, Brentford 2, Bristol City 0.
Offside, Bristol City. Frank Fielding tries a through ball, but Callum O'Dowda is caught offside.
Corner,  Bristol City. Conceded by Rico Henry.
Romaine Sawyers (Brentford) wins a free kick in the attacking half.
Foul by Lee Tomlin (Bristol City).
Daniel Bentley (Brentford) wins a free kick in the defensive half.
Foul by Matty Taylor (Bristol City).
Attempt saved. Bailey Wright (Bristol City) header from the centre of the box is saved in the top centre of the goal.
Corner,  Bristol City. Conceded by Rico Henry.
Attempt missed. Aden Flint (Bristol City) header from the centre of the box is high and wide to the right. Assisted by Bobby Reid following a set piece situation.
Foul by Yoann Barbet (Brentford).
Tammy Abraham (Bristol City) wins a free kick in the attacking half.
Romaine Sawyers (Brentford) wins a free kick in the attacking half.
Foul by Jens Hegeler (Bristol City).
Substitution, Brentford. Nico Yennaris replaces Konstantin Kerschbaumer.
Attempt missed. Matty Taylor (Bristol City) right footed shot from the centre of the box is close, but misses to the left. Assisted by Tammy Abraham.
Bobby Reid (Bristol City) hits the right post with a right footed shot from the right side of the box. Assisted by Korey Smith with a cross.
Romaine Sawyers (Brentford) wins a free kick in the defensive half.
Foul by Bobby Reid (Bristol City).
Corner,  Brentford. Conceded by Aden Flint.
Foul by Konstantin Kerschbaumer (Brentford).
Callum O'Dowda (Bristol City) wins a free kick in the attacking half.
Foul by Ryan Woods (Brentford).
Callum O'Dowda (Bristol City) wins a free kick in the defensive half.
Offside, Brentford. Jota tries a through ball, but Florian Jozefzoon is caught offside.
Attempt blocked. Lee Tomlin (Bristol City) right footed shot from outside the box is blocked.
Foul by Ryan Woods (Brentford).
Callum O'Dowda (Bristol City) wins a free kick in the attacking half.
Attempt blocked. Bobby Reid (Bristol City) right footed shot from outside the box is blocked. Assisted by Callum O'Dowda.
Attempt saved. Josh Clarke (Brentford) left footed shot from the right side of the box is saved in the centre of the goal. Assisted by Jota.
Substitution, Bristol City. Jens Hegeler replaces Gary O'Neil because of an injury.
Delay over. They are ready to continue.
Delay in match Gary O'Neil (Bristol City) because of an injury.
Foul by Rico Henry (Brentford).
Korey Smith (Bristol City) wins a free kick in the defensive half.
Foul by Lasse Vibe (Brentford).
Lee Tomlin (Bristol City) wins a free kick in the defensive half.
Offside, Brentford. Josh Clarke tries a through ball, but Florian Jozefzoon is caught offside.
Substitution, Brentford. Josh Clarke replaces Maxime Colin.
Goals from Sergi Canos and Lasse Vibe helped Brentford end Bristol City's four-game unbeaten streak.