Juventus dropped to last in Group B but following FC Copenhagen's 1-0 home win over Galatasaray, Antonio Conte's men now trail the Turks and the Danes by just one point with two games to play.
Conte sent out a similar set-up to the one deployed in the 2-1 defeat at the Santiago Bernabeu, with Fernando Llorente partnering Carlos Tevez at the head of a 4-3-3 — a change from the Italians' preferred 3-5-2 formation.
After a shaky start the Italian champions finally found their feet and held a 1-0 lead at the interval after Arturo Vidal's 42nd minute spot kick following a foul on Paul Pogba by fellow Frenchman Raphael Varane.
However Real turned the match in eight second-half minutes with Ronaldo chipping Buffon to level and then Bale beating the Italian 'keeper with a clinical shot after sidestepping Kwadwo Asamoah on the hour mark.
Ronaldo gave an early warning with an angled strike that inched just past outstretched 'keeper Gianluigi Buffon's far post after giving Ghanaian Asamoah the slip at left-back.
However Juve eventually found their feet, with Pogba — rumoured to be a target for Real and several other European giants — showing great skill to shake up the Spanish giants.
The Frenchman's deft shot-cum-pass with the outside of his right foot was blocked by Pepe, but left Casillas panicking as Llorente lingered before the ball was cleared.
Casillas then somehow kept out Claudio Marchisio's header near the back post following Tevez's precision cross from the left.
At the other end Bale sent an angled drive just wide of Buffon's far post and, as Real's frustration grew, Luka Modric picked up a caution for a foul from behind on Pogba that will rule him out of Real's next meeting with Galatasaray.
Referee Howard Webb looked unimpressed when waving away two soft penalty claims by the hosts in the first half.
But the Englishman finally pointed to the spot, amid protests from Real, after Varane made contact with Pogba, who tumbled to the left of goal to hand juve a lifeline.
Vidal gave Casillas no chance, smashing the ball into the top right-hand corner.
Juve endured a nervous end to the half, a Bale corner causing a scare and a first-time effort from Ronaldo following Marcelo's weighted cut-back going high over the bar.
Carlo Ancelotti's men continued as they had left off, pressing Juve from the restart and being rewarded when Caceres blundered with a missed backpass which Ronaldo, following Benzema's lay-off, deftly chipped over onrushing Buffon.
Ronaldo's eighth goal of the campaign knocked the wind from Juve's sails, and the visitors were unlucky when Xabu Alonso smashed a drive off the crossbar minutes later.
Just as belief began creeping back among the Bianconeri fans, following a dangerous Pogba pass across goal which Casillas blocked, Real took the lead in clinical fashion.
Bale picked up Ronaldo's pass and turned Asamoah to send a smart left-foot strike inside the Buffon's near post.
Juve, however, were back on level terms minutes later, Caceres making amends for his earlier blunder with a curling cross which Llorente headed past Casillas.
Real remained a constant threat, however, and despite Juventus creating chances late on the Italians did well to take a share of the points.