Tito Vilanova's Barca headed into the Primera Division game at the Nou Camp eight points clear of their arch rivals and boasting a 100 per cent record from their first six matches, but found themselves trailing midway through the first half when Ronaldo netted for the sixth straight Clasico.
But Messi equalised with a scrappy goal soon after and then put the hosts ahead with a stunning free-kick on the hour, only for Ronaldo to capitalise on sloppy defending midway through the second half to ensure honours ended even.
Barca midfielder Andres Iniesta was handed his first start since the Supercopa aggregate defeat against Real in August, while Adriano partnered Javier Mascherano at centre-back with Gerard Pique (foot) and Carles Puyol (dislocated elbow) sidelined.
Madrid coach Jose Mourinho made three changes from the team that won 4-1 at Ajax in the Champions League on Wednesday, with Sami Khedira, Mesut Ozil and Angel Di Maria replacing Michael Essien, Kaka and Jose Callejon.
The visitors began brightly and created the better of the early chances.
Ronaldo - scorer of a midweek hat-trick in Amsterdam, and the winner in this corresponding fixture last term to virtually assure Madrid the title - crossed from the right for Karim Benzema, who miscued his volley horribly wide from 12 yards when left unmarked in the 13th minute.
Six minutes later, Ozil sent over a corner and Sergio Ramos leapt above the Barca defence only to direct his header inches wide of Victor Valdes' goal.
The warning signs had been there but Barca failed to heed them and the opener duly arrived midway through the first half. Benzema turned neatly on the edge of the box and fed Ronaldo, who lashed home a low left-footed finish which beat Valdes at his near post.
It could have been 2-0 moments later when Khedira burst down the right before feeding Benzema. The Frenchman spooned his effort against the post, though, and Di Maria sent the rebound wide with the goal at his mercy.
The home team suffered a further blow when Dani Alves' involvement ended in the game after 28 minutes, the Brazilian replaced by Martin Montoya.
However, two minutes later they were level. Madrid failed to clear their lines from Pedro Rodriguez's cross and, after bobbling around in the area the ball fell kindly to Messi in the six-yard box and he lashed past a helpless Iker Casillas and into the roof of the net.
Both sides had decent penalty shouts turned down at the start of the second half, Ozil going down after contact with Mascherano before Iniesta appeared to be clipped by Pepe.
Vilanova's team took the lead in spectacular style on the hour mark, Messi picking himself up after being fouled by Xabi Alonso and despatching a brilliant left-footed free-kick up over the wall and curling away from the diving Casillas.
Whatever Messi could do, though, Ronaldo could do too, and swiftly matched the Argentina forward's eight goals in La Liga this term six minutes later.
Ozil slotted a slick pass through to the Portuguese, who had been played onside by Adriano and coolly slotted past Valdes to get Madrid back on level terms.
The final quarter was end-to-end stuff, although Mourinho's men were seemingly the more content with the point.
Messi floated a shot high and wide from Jordi Alba's cut-back, with Iniesta's cross scrambled clear by Marcelo soon after.
Gonzalo Higuain, a 62nd-minute replacement for Benzema, saw his cross deflected to safety by Mascherano before the final few minutes were played out almost entirely in Madrid's defensive third.
Montoya was almost an unlikely match-winner on 88 minutes but his right-footed attempt from the edge of the box crashed back off the bar, before Pedro burst through in stoppage time and unleashed a left-footed shot which flew just wide.