Kevin de Bruyne's screamer earned Manchester City a Champions League semi-final first-leg draw at Real Madrid to keep their dream of a Treble on track.
City know any win next Wednesday at home against Madrid will send them to only their second Champions League final, against either Inter Milan or AC Milan.
Pep Guardiola's side dominated the early stages at a nervy Bernabeu, with Thibaut Courtois denying De Bruyne, Rodri and Erling Haaland twice.
But Vinicius Jr scored with Real's only chance of the first half, a 25-yard thunderbolt which flew past Ederson following a brilliant run by Eduardo Camavinga.
Just as Real began to dominate a period of the second half, City found a way back with De Bruyne fizzing a shot from a similar distance into the bottom corner.
Aurelien Tchouameni almost gave Real, looking to extend their record tally to 15th European crowns, the lead again with another strike from range but it was well saved by Ederson.
City are now unbeaten in 21 games in all competitions, a run which includes 17 wins. Seven more victories and they get the Treble.
Man City take step closer to glory
The Champions League is the one that has been missing for City and they are arguably the best European team of the current era never to win it.
It sounds so simple, but they just need to beat Real, who are third in La Liga, at home and then either the team fourth or fifth in Italy's Serie A in the final in Istanbul. Milan face Inter on Wednesday.
Not that Guardiola will let his players get carried away with that scenario.
They lead the Premier League from Arsenal with four games to go and face Manchester United, the only English team to win a Treble, in the FA Cup final in June.
Talk before the game was of revenge, with Real beating City at this stage last season in a 6-5 aggregate classic.
But, a year on, City look more grown up and almost unbeatable. This game was edgy and heated but lacked some of the chaos of last season's first leg, which ended 4-3.
Guardiola knows his best team now so the days of throwing a tactical shock, which often did not work, in a game like this seem a thing of the past.
They played this game as if they were at home, with Real supporters booing their relentless possession. Courtois had four saves to make in the opening 16 minutes alone.
But then they trailed to Vinicius' goal - with the Brazilian also scoring against City last year.
However their heads did not drop, and their three-month unbeaten run continues thanks to De Bruyne.
Ilkay Gundogan laid the ball off for De Bruyne, who thrashed a shot past his Belgium team-mate Courtois. Having also netted in 2020, De Bruyne is the first player in Champions League history to score in separate away games against Real in the knockout stages.
City - who did not make any substitutions - never had a chance to win the game, with that their last shot of the game. Next week they will hope to see 51-goal Haaland get more joy in front of goal.
Never write off Real Madrid
Madrid's aura in the Champions League is something special. They are not the defending champions - and 14-time winners - by accident.
Domestically they sit 14 points behind champions elect Barcelona, with Atletico Madrid also above them.
But they have won five Champions Leagues in nine years, with two of them coming in seasons they finished third.
Carlo Ancelotti's side came into this game on a good bit of domestic news, having won the Copa del Rey final against Osasuna on Saturday.
But this is where Real thrive - often against English clubs too. This is their sixth knockout round in a row against City, Chelsea or Liverpool - they have come through the other five.
The first half was a smash and grab to some extent with Vinicius' goal coming from their first real attack. Only Haaland (13 - 12 goals, one assist) has been involved in more Champions League goals than Vinicius this season (12 - seven goals, five assists).
They grew into the game in the second half, with De Bruyne giving them a taste of their own medicine by scoring after the end of a good spell for Real.
Camavinga, who set up their goal, gave the ball away to Rodri in the build-up, highlighting the pros and cons of playing a central midfielder at left-back.
Madrid boss Ancelotti was booked for his angry reaction to the goal, claiming the ball went out of play in the build-up. His side had chances to win the game with Benzema's header saved by Ederson, before French sub Tchouameni went close.
Player of the match
De BruyneKevin De Bruyne
Real Madrid
Squad number20Player nameVinícius Júnior
Squad number12Player nameCamavinga
Squad number1Player nameCourtois
Squad number10Player nameModric
Squad number9Player nameBenzema
Squad number22Player nameRüdiger
Squad number21Player nameRodrygo
Squad number4Player nameAlaba
Squad number2Player nameDani Carvajal
Squad number15Player nameValverde
Squad number8Player nameKroos
Squad number18Player nameTchouaméni
Squad number6Player nameNacho
Squad number11Player nameAsensio
Line-ups
Real Madrid
Formation 4-3-3
1Courtois
2Carvajal Ramos22Rüdiger4Alaba12Camavinga
15Valverde8Kroos10Modric
21Rodrygo9Benzema20Vinícius Júnior
1Courtois2Carvajal Ramos22Rüdiger4Alaba12CamavingaBooked at 79mins15Valverde8KroosBooked at 45minsSubstituted forTchouaméniat 84'minutes10ModricSubstituted forNachoat 87'minutes21RodrygoSubstituted forAsensioat 81'minutes9Benzema20Vinícius JúniorSubstitutes
5Vallejo6Nacho7E Hazard11Asensio13Lunin16Odriozola17Vázquez18Tchouaméni19Ceballos24Mariano26López AndúgarMan City
Formation 3-2-4-1
31Ederson
2Walker3Rúben Dias25Akanji
5Stones16Rodri
20Bernardo Silva17De Bruyne8Gündogan10Grealish
9Haaland
31Ederson3Rúben Dias25Akanji2Walker5Stones16Rodri8GündoganBooked at 71mins17De Bruyne10Grealish20Bernardo SilvaBooked at 86mins9HaalandSubstitutes
4Phillips14Laporte18Ortega19Álvarez21Gómez26Mahrez33Carson47Foden80Palmer82LewisReferee:Artur Manuel Soares DiasAttendance:63,485Live Text
Match ends, Real Madrid 1, Manchester City 1.
Second Half ends, Real Madrid 1, Manchester City 1.
Attempt saved. Nacho (Real Madrid) right footed shot from outside the box is saved in the top right corner. Assisted by Eduardo Camavinga.
Attempt blocked. Eduardo Camavinga (Real Madrid) right footed shot from the left side of the box is blocked. Assisted by Vinícius Júnior.
Attempt blocked. Vinícius Júnior (Real Madrid) right footed shot from the left side of the box is blocked.
Corner, Real Madrid. Conceded by Ederson.
Attempt saved. Aurélien Tchouaméni (Real Madrid) right footed shot from outside the box is saved in the top centre of the goal. Assisted by Karim Benzema.
Substitution, Real Madrid. Nacho replaces Luka Modric.
Corner, Real Madrid. Conceded by Rodri.
Bernardo Silva (Manchester City) is shown the yellow card for a bad foul.
Foul by Bernardo Silva (Manchester City).
Vinícius Júnior (Real Madrid) wins a free kick in the attacking half.
Foul by Rodri (Manchester City).
Eduardo Camavinga (Real Madrid) wins a free kick on the left wing.
Substitution, Real Madrid. Aurélien Tchouaméni replaces Toni Kroos.
Substitution, Real Madrid. Marco Asensio replaces Rodrygo.
Eduardo Camavinga (Real Madrid) is shown the yellow card for a bad foul.
Rodri (Manchester City) wins a free kick in the defensive half.
Foul by Eduardo Camavinga (Real Madrid).
Attempt saved. Karim Benzema (Real Madrid) header from the right side of the six yard box is saved in the centre of the goal. Assisted by Toni Kroos.