Messi's goals were the 300th and 301st of his career, a total made up of 270 for Barca and 31 for Argentina in only 419 matches.
They also took him to 13 in the league this season and 73 in all competitions in 2012.
That's just two behind Pele's 75 for Santos and Brazil in 1959, and only 12 shy of Gerd Mueller's all-time best calendar year record of 85 goals for Bayern Munich and West Germany in 1972.
Rayo had started brightly and saw claims for a penalty turned down after just eight minutes when Fabregas appeared to hold back Leo Baptistao.
Rayo were pressuring the Catalans and it took until the 19th minute for Barca to have their first shot when Messi drove wide.
However, a minute later, Barcelona were ahead.
The chance came from nothing when Fabregas picked up a loose ball and played in Villa with a probing pass that the Spanish national team's all-time top scorer finished first time with his right foot.
Messi went close with a curled free kick and as a hard fought first-half drew to a close Andrija Delibasic forced Victor Valdes into a save at the other end.
Within two minutes of the restart, Messi had doubled the lead.
Pedro Rodriguez found Martin Montoya in an advanced wide position and the right-back pulled the ball back for the little Argentine who steered it first time into the top right corner of the net.
Javi Fuego then hit a rasping left footed drive that Valdes pushed wide and Jordi Amat tried his luck from distance as the home side looked for a quick way back into the match.
Valdes was earning his wages as he next got down well to stop another drive from Fuego.
Barcelona were quick to sense the danger and began to close down the game with a more measured approach that restricted Rayo's attacking forays.
Xavi and Fabregas then added two more in two minutes with 10 minutes remaining.
With two minutes left, Messi raced onto a Fabregas pass to get his second and his side's fifth.
The late goal rush put the focus squarely back on closest challengers Atletico Madrid, who will attempt to draw level with Barca again tomorrow when they host bottom-placed Osasuna.
Salva Sevilla scored his first goal of the season on nine minutes after Juan Carlos' cross was not properly cleared by Adil Rami.
Adrian ensured the win, and his third consecutive clean sheet since taking over as the first-choice goalkeeper, when he kept out Roberto Soldado's late effort with his legs.
Celta Vigo claimed a 1-1 draw in their Galician derby with Deportivo La Coruna despite playing with 10 men for 40 minutes.
Mario Bermejo gave Celta an eighth-minute lead only for Juan Dominguez to equalise 21 minutes later.
Celta then had Gustavo Cabral dismissed for a second caution on 52 minutes but the visitors failed to make the extra man count.
Zlatan Ibrahimovic was the goal hero for Paris St Germain once again as his second-half strike gave the Ligue 1 leaders victory in Nancy.
The Swedish striker struck in the 74th minute in difficult conditions at the Stade Marcel Picot for his 10th league goal in as many matches since joining from AC Milan.
Toulouse moved up to second with a 3-1 victory over Brest.
First-half goals from Wissam Ben Yedder and Etienne Capoue put the hosts firmly in control and although Benoît Lesoimier pulled one back for Brest after the interval, Adrien Regattin made sure of the win in injury time.
Toulouse are now just three points behind PSG while Brest are yet to pick up a single point in six away games this season.
Montpellier ended their wait for a first home win of the season with a 3-1 result against Nice.
After two draws and two defeats at Stade de la Mosson, the defending champions finally produced the goods with second-half strikes from Souleymane Camara and John Utaka, plus an own goal from Renato Civelli.
Some of the shine was taken off the performance when Dario Cvitanich scored from the penalty spot in stoppage time, with Garry Bocaly sent off in the same incident, but the points had already been secured by then.
Valenciennes were unable to reproduce their recent superb goal scoring form as they slumped to a 2-1 defeat at Lille.
The home side were in front after just two minutes through Nolan Roux and were helped further by the dismissal of VA midfielder Carlos Sanchez on the half-hour mark.
Lille looked like they could run away with things when Dimitri Payet added a second goal soon afterwards, but their opponents battled hard after the interval and Anthony Le Tallec's reply set up a tense finish.
Troyes could not produce a repeat of last week's shock victory over then league leaders Marseille as they played out a 1-1 draw with Reims.
Aissa Mandi headed the visitors ahead just before the half-hour but Troyes were undeterred, Florian Jarjat heading against a post before Fabien Camus volleyed home a superb equaliser after 62 minutes.
The match between Sochaux and Evian was postponed after heavy snowfall in Montbéliard.
Benfica opened up a three-point lead at the top of the Portuguese Liga table following a 3-0 win at Gil Vicente.
The Lisbon club were out of sight by half-time as goals from Lima (two minutes), Luisinho (27) and Andre Gomes (45) set them on their way.
The win was soured only by the 70th-minute dismissal of Argentinian midfielder Enzo Perez.
Two late goals helped Pacos Ferreira up to fifth with a 2-0 win at Beira Mar.
Vitor broke the deadlock on 81 minutes before substitute Arturo Alvarez got the clincher with three minutes left.
Pedro Rui Duarte netted two penalties to give Olhanense a 2-2 draw at home to Moreirense.
Moreirense had twice gone ahead through Pablo Olivera (35) and Nabil Ghilas (57) but were pegged back by Rui Duarte spot-kicks on each occasion.
Genoa lost their second game in a row to fall behind Milan in the table with the managerial switch from Luigi De Canio to Luigi Del Neri having no immediate effect.
With a goalless draw looking increasingly likely, Ignazio Abate was sent through by Urby Emanuelson just to the right of the penalty area in the 77th minute.
The linesman's flag stayed down and the Milan fullback's low cross was met in front of goal by El Shaarawy, who stroked the ball in from five yards.
Eredivisie basement side VVV-Venlo's abysmal start to the season continued as they were hammered 4-1 at home against fellow strugglers NAC Breda.
The visitors were out of sight by half-time, with an eighth minute strike from Kees Luyckx setting them on their way while Elson Hooi doubled their lead after 28 minutes - just three minutes before Uche Nwofor pulled one back for VVV.
Danny Verbeek extended NAC's two-goal cushion in the 39th minute before Anthony Lurling completed the scoring on the stroke of half-time as NAC claimed their second win of the season to move into third from bottom above Willem II, who were beaten 2-0 at ADO Den Haag.
Willem II were holding their own until Jordens Peters was dismissed in the 61st minute.
Danny Holla netted from spot immediately after and Mike van Duinen sealed all three points for Den Haag two minutes from time.
Elsewhere NEC Nijmegen were held to a goalless draw at home to Roda JC.
Goals from Cillian Sheridan and Liam Kelly gave Kilmarnock their first win over Celtic at Parkhead in 57 years.
Sheridan set the visitors on the way to their historic victory two minutes before the break when he capitalised on slack play by Efe Ambrose to race clear and round keeper Fraser Forster before scoring into an empty goal.
Midfielder Kelly scored the second from the penalty spot just after the hour mark after Emilio Izaguirre was adjudged to have fouled Rory McKenzie.
Celtic remain top but have three clubs breathing down their necks, just two points adrift.
Summer signing Niall McGinn's strike and Jim McAlister's own goal saw Aberdeen stretch their unbeaten run in all competitions to 12 games thanks to a comfortable 2-0 win over Dundee at Pittodrie.
Ryan Fraser picked up on a poor clearance from Dundee goalkeeper Rab Douglas to send in a low cross from the right which Stephen Hughes stepped over and McGinn struck home.
They finally made it 2-0 when, after 74 minutes, substitute Johnny Hayes' free kick was deflected in off McAlister.
David Robertson's last-gasp equaliser for St Johnstone denied Inverness Caledonian Thistle their fourth league win in a row.
Billy McKay had put the Highland side in front with a close-range angled shot in the 74th minute, moments after Andrew Shinnie missed a penalty, but Robertson levelled in the second minute of stoppage time with a point-blank header.
The draw ended the Perth side's six-game winning streak in all competitions but moved them to within two points of SPL leaders Celtic.
John Sutton struck a last-gasp leveller for troubled Hearts in a 2-2 with Ross County.
County appeared set for a second win over Edinburgh clubs in the space of a week following Stuart Kettlewell's 77th-minute strike, but substitute Sutton popped up in the third minute of stoppage time to claim a draw.
Arvydas Novikovas' opener five minutes before half-time had been cancelled out by a disputed Richard Brittain penalty and Kettlewell's strike, coupled with Michael Fraser's heroics in the County goal, appeared set to seal the points for the visitors before Sutton's late intervention.
Johnny Russell grabbed the only goal of the game from the penalty spot as Dundee United scraped a narrow victory at St Mirren.
Follow us @SprtNationalUAE