After the hosts had a goal disallowed in the 25th minute, and the Sicilians' owner and president Antonio Pulvirenti was sent away from the bench, the home side struggled to maintain a level head and Juve took advantage.
Vidal scored the only goal of the game 12 minutes after the interval, which, unlike Catania's effort, should have been disallowed and it was enough to earn the Bianconeri all three points.
Catania's afternoon was then compounded as they ended the game with 10 men after Giuseppe Marchese was sent off.
Catania started brightly and they looked to have taken the lead in the 25th minute when Gonzalo Bergessio tapped in the rebound after Francesco Lodi's header had come back off a post.
The two teams and the referee were returning to the centre circle for the restart, but the linesman called the official over and, after the pair conferred over the radio with the fourth official, the goal was ruled out.
Catania's protested and with replays showing an offside decision to be wrong, it seemed the hosts had every right to feel aggrieved although Pulvirenti was a little too animated for the referee's liking and he was dismissed.
Nicolas Legrottaglie continued the protests as the sides went in level at half-time, and he had even more to complain about when Juve took the lead in the 57th minute.
Nicklas Bendtner, making his first start in Serie A for Juve, was in an offside position when he was sent through by Mirko Vucinic, and his shot was parried out to Vidal, who was on hand to score his third goal of the season.
Marchese was sent off 10 minutes later for a second yellow card as he deliberately handled the ball, and from Andrea Pirlo's free-kick, Paul Pogba's header was turned behind well by Mariano Andujar.
With only 10 men, and already a goal behind, Catania lost belief and Juve started to sense victory.
Andujar denied Bendtner before pushing away a dangerous shot from Sebastian Giovinco and denying Vidal as Juve pushed for a second goal, which they did not need to seal the win.