The run was always going to end.
And from Pep Guardiola’s perspective, defeat in a Champions League dead rubber was just about the perfect time to throw in a performance like this.
But Guardiola is not just any manager.
His pursuit of perfection is what has led to Manchester City’s stunning start to the season and 20-game winning run that came to such a shuddering halt in Kharkiv.
He knew the runaway Premier League leaders would lose eventually – he even forecast as much on the eve of the final Group F game against Shakhtar Donetsk.
But there are ways to lose – even in Guardiola’s demanding world.
Defeat was meaningless – the manner of it was not.
This was an opportunity for players to make a statement to the City manager – to perhaps make his job more difficult when picking his starting XI for Sunday’s derby.
Instead Bernardo Silva and Ilkay Gundogan did little to convince him he should veer from the core of players who have carried City to such heights this season.
Likewise Gabriel Jesus – who tasted defeat for the first time since his move from Palmeiras in January – could not put up a compelling argument to start ahead of Sergio Aguero at Old Trafford, despite Guardiola’s concerns about the Argentine’s form.
Jesus has now scored two in his last 11 games – an increasing issue for Guardiola at a time when he might look to take Aguero out of the fray.
Pacing around his technical area – head in hands each time possession was lost – it was clear how much wanted to win. How much he wanted a much-changed team to make a statement.
Even if Kevin de Bruyne, David Silva, Raheem Sterling, Kyle Walker, Vincent Kompany and Aguero were absent from the starting XI – or the squad completely – City still fielded a team with a value of more than £280m.
Even if victory could not be guaranteed, it was not a team that should have been rolled over in the manner they were during a torrid first 45 minutes.
As they made their way to the tunnel at half time they could consider themselves fortunate not to be four or five behind.
Bernard’s 26th-minute curling effort and Ismailly’s tap home after Ederson was caught outside his area handed Shakhtar a 2-0 lead – but they deserved much more.
But for some wasteful finishing it Guardiola’s team could have been on the end of a hiding.
What was surely a stern half time team talk did at least have an impact.
City were significantly improved after the break – eventually finding a way through in injury time when Jesus was brought down in the box and Aguero converted from the penalty spot to make it 2-1.
Guardiola will take comfort from that – but not a lot else.
The job of picking his team for Sunday could be the easiest one he’s had since taking over at the Etihad.