Tuesday's game was played under a torrential downpour, but that did not stop the visitors from starting on the front foot.
Chelsea were, by far, the better side in the opening stages and fashioned the best chances, with Timo Werner shooting straight at Thibaut Courtois from six yards out.
The Blues soon got the lead they deserved when a lofted pass by Antonio Rudiger caught out the Real Madrid defense and allowed Pulisic to run behind. The American showed great composure to skip past a sprawling Courtois before slotting the ball into the back of the net.
Karim Benzema hit the post a couple of minutes later before showing his ingenuity six minutes later. A corner kick was not properly dealt with by the Chelsea defense. Benzema controlled the ball in the air before converting with an acrobatic finish.
This was his 71st goal in the Champions League and saw him go level with the iconic Raul Gonzalez as the fourth all-time highest goalscorer in the competition.
Both sides went into the break level, with the rain continuing to pour down heavily.
The second half was a more cagey affair, with the tempo of the game significantly reduced.
A raft of changes were made in the final 25 minutes, with Kai Havertz, Hakim Ziyech and Alvaro Odriozola all among those to come on, while Eden Hazard also got to face his former side.
Neither side was able to find the winning goal. This ensures that the tie is still firmly poised ahead of the second leg.
The draw means that Real Madrid are now unbeaten in 17 matches across all competitions. It also means Chelsea remain unbeaten in four games against Los Blancos, winning and drawing two apiece.
Here is a rundown of how the players fared in the clash between Real Madrid and Chelsea.
Real Madrid player ratings against Chelsea
Thibaut Courtois - 6.5/10
The Real Madrid goalkeeper made a number of fine saves to keep his side in the game when Chelsea were in the ascendancy. However, his eagerness got the better of him in the buildup to Pulisic's goal.
Marcelo - 6.5/10
Marcelo stood in as the Real Madrid captain but did not offer too much going forward. He was substituted in the 72nd minute.
Nacho Fernandez - 6/10
The 31-year-old made one interception and also registered one shot off target.
Raphael Varane - 6.5/10
Varane made seven clearances and had a pass accuracy of 95.3%, which was the highest of all Real Madrid players who started the game.
Eder Militao 8.5/10
Eder Militao was a rock at the heart of the Real Madrid defense and played a key role in keeping Chelsea at bay. He also stepped up to provide an assist for Benzema's equalizer.
Dani Carvajal - 6/10
Dani Carvajal was beneath his usual best against Chelsea, which was understandable considering he was just returning from an injury. He struggled with his fitness late on and had to be substituted.
Casemiro - 7/10
Casemiro was overworked by the Chelsea midfielders but still proved his mettle with three tackles. He also created two chances for his teammates.
Luka Modric - 5.5/10
Luka Modric did not have the best of games, as Chelsea totally dominated the midfield.
Toni Kroos - 7/10
Toni Kroos was the chief instigator of Real Madrid's attacks and discharged his duties effectively. He created two chances and had a pass accuracy of 92.4%.
Vinicius Junior - 6.5/10
The Brazil international was vibrant down the flanks and played his role in keeping the Chelsea defense on the backfoot before his replacement in the 65th minute.
Karim Benzema - 8/10
Karim Benzema has been Real Madrid's savior this season and stepped up to the plate once more against Chelsea.
Eden Hazard - 5.5/10
Hazard came on against his former side with 25 minutes to go but did not make much impact during his time on the field.
Marco Asensio - 5.5/10
Marco Asensio came on for Marcelo in the 77th minute and ended the game with a 100% pass accuracy.
Alvaro Odriozola - 5/10
Odriozola came on for Carvajal with 13 minutes to go but still got booked for a rash challenge on Antonio Rudiger.
Rodrygo - N/A
The 20-year-old came on in injury time and barely had a touch of the ball.