In a recurring theme of this season Madrid were made to pay for Cristiano Ronaldo and Karim Benzema missing first-half chances as Barca took control after half-time. Suarez rounded off a flowing counter-attack to open the scoring before Messi blasted home a penalty after Madrid defender Dani Carvajal was sent-off for punching the ball off the goal line.
And Messi was the creator as Vidal rubbed salt into Real's wounds deep into stoppage time. Victory extends Barca's unbeaten run to 25 games in all competitions as they moved nine points clear of second-placed Atletico Madrid and exacted revenge for a 5-1 thrashing on aggregate in the Spanish Super Cup at the hands of Real in August.
Madrid do still have a game in hand over Barca to marginally reduce the gap at the top, but their efforts in the new year are now likely to be more focused on becoming the first side to win three consecutive Champions League titles in over 40 years.
Despite the clash between the Spanish capital's and Catalonia's two giants taking place just two days after three parties favouring independence for the prosperous region from Spain retained an absolute majority in the Catalan parliament, there was little attention paid to politics inside the ground once the action got underway.
Madrid fans unfurled a huge banner proclaiming it to be a “white Christmas” after they claimed a club record five trophies in 2017.
However, it is Barca who will enjoy the upcoming winter break more after a second-half display which showed the turning of the tide their way since August has been no fluke. It could have been very different for the hosts if Cristino Ronaldo had buried a huge opportunity when he completely miskicked just 10 minutes in.
Barca didn't threaten at all until the half hour mark when Messi finally found some room in a congested midfield to pick out Paulinho's late run and the Brazilian's acrobatic effort was matched by a flying save from Keylor Navas.
Seconds later it was Marc-Andre ter Stegen to demonstrate why he has been one of the keys to Barca's success this season by getting an outstretched toe to turn Ronaldo's fiercely struck shot behind.
Benzema was inches away from giving Real a half-time lead as he headed against the post two minutes before the break. However, Barca came out a different side in the second period to almost certainly put the title out of Madrid's reach.
Nine minutes after the break Sergio Busquets's calm opened up the Madrid midfield as he fed Ivan Rakitic and Sergi Roberto eventually crossed to Suarez to apply the finishing touch.
Suarez was spared the embarrassment of missing two huge chances in an incredible goal mouth scramble that led to Barca's second.
Navas saved Suarez's first effort before he fired against the post with the goal at his mercy, but Paulinho's follow-up was punched off the line by Dani Carvajal.
The Spanish international accepted his punishment of a red card and Messi dispatched the resulting penalty into the top corner to kill the game as a contest.
Ter Stegen produced more heroics to ensure there was no Real fightback as he again denied Ronaldo. And Barca put the seal of a stunning victory in stoppage time when Vidal drove Messi's cut-back towards goal and the ball squeezed in under Navas.