The Bundesliga side gave a fine account of themselves but were outdone by the two moments of quality from Leroy Sane. The German appears to have returned to top form after a topsy-turvy 2018.Julian Nagelsmann and his team will head back to Germany knowing, had they performed as well as they did here on their previous travels across Europe, there's a good chance they'd be celebrating a spot in the Champions League last 16.
As it happened, they were left needing a win away to one of Europe's finest teams in order to secure passage to the Europa League. If there was a glimmer of hope on seeing the team sheets before kick off, with several of City's big guns rested, Sane put an end to that with two fantastic goals either side of half time.
The first, a freekick that fizzed over the wall and well beyond the fingertips of Oliver Baumann, the Hoffenheim goalkeeper, put City back on level pegging after Andre Kramaric's penalty gave the visitors an unlikely lead. His second, arriving midway through the second half, was a poacher's finish. The 22-year old raced beyond the Hoffenheim defense and jinked past the onrushing Baumann before finishing neatly.
Sane appears to have put a difficult six months behind him. After winning a first Premier League medal and scooping the Premier League's Young Player of the Year Award at the beginning of 2018, the 22-year old was left out of Joachim Löw's World Cup squad and appeared to have lost his place in the Manchester City team earlier this season. Six goals and four asissts since the beginning of November indicate an emphatic return to form.
Goals aside, the former Schalke man was menacing throughout this match, his pace and direct running causing Hoffenheim right-back Pavel Kaderabek issues time and time again. When the Czech could, he fouled him. When he couldn't, he chugged after him like a labrador chasing a prize greyhound.
Julian Nagelsmann would have been relishing going head to head with his "coaching idol" Guardiola, and his side got off to a dream start when Aymeric Laporte was penalised for a foul in the area on Kramaric. The Croatian took responsibility himself and fired the Bundesliga club ahead inside the opening ten minutes.
As the old cliche goes, you can score too early against the top sides, and Man City began to dominate the match thereafter. Ilkay Gündogan and Sane squandered gilt-edged opportunities before the latter equalised on the stroke of half time.
It wasn't the result Nagelsmann was hoping for but he'll already be relishing his next chance to pit his wits against the Catalan. Whenever that may be, tactics are unlikely to make much difference if Sane plays like this again.