The result means Pep Guardiola's men can clinch the title as early as next weekend if second-placed Borussia Dortmund fail to beat Hamburg and Stuttgart in their next two matches, coupled with a Bayern triumph at Hertha Berlin on April 23.
The deserved victory rounded off a fine week for the Bavarian giants in which they also progressed to the last four of the Champions League, but they were made to work for the three points by an stubborn Schalke side who kept them at bay for almost an hour.
The visitors defended stoutly as they sought to keep a first clean sheet in seven games and maintain their hopes of securing a Champions League place.
But they were undone on 54 minutes when Robert Lewandowski rifled home his 26th league goal of the season from close range.
The Pole then made it 2-0 with a fine header just after the hour-mark, before Vidal added the third on 73 minutes, ensuring Bayern would maintain an unbeaten league run at home to Schalke that stretches back to 2009.
For Andre Breitenreiter's men, meanwhile, the defeat means they have now won only three of their last 12 games in all competitions and remain seventh in the table
With the visitors happy to get numbers behind the ball and sit deep, Bayern struggled to find a way through during a low-key first half.
Despite some promising approach work from Kingsley Coman and Douglas Costa down either flank, it took the hosts until the 18th minute to create their first shooting opportunity, when Juan Bernat dragged his effort wide of the far post from 15 yards out.
On their rare attacking forays, Leroy Sane looked lively for Schalke, but the hosts' goalkeeper Manuel Neuer still remained a virtual spectator for the entire opening 45 minutes.
Opposite number Ralf Fahrmann was similarly under-worked, although he was grateful to Joel Matip just before the break as the Cameroon international foiled Mario Gotze's attempt to turn and shoot from close range.
Bayern upped the pace at the start of the second half, with Coman and Philipp Lahm both drawing saves from Fahrmann.
On 52 minutes, Vidal was narrowly off-target after a neat turn on the edge of the box and seconds later it was Costa's turn to be denied by Fahrmann.
Finally the breakthrough arrived, however, as Vidal found Lewandowski and he pivoted in the box before finding the bottom corner of the net.
Ten minutes later, the Bundesliga's leading scorer grabbed his and Bayern's second, rising highest to head home a superb Rafinha cross from the right.
Sane then came close to providing an immediate response for Schalke, but his header from a Caicara cross was straight at Neuer and the game was effectively ended as a contest on 73 minutes when substitute Franck Ribery teed up Vidal for the Chilean to bag his second goal in four days.