Max O'Leary - 6
Showed nice composure to come out his area to deal with a dangerous diagonal. Made a superb stop before the goal but had little chance with the rebound. Having re-watched the second, felt sympathy for his role having come off his line and was impacted by a marauding Tomas Kalas. A great penalty save at the end.
Zak Vyner (off 90, Kadji) - 6
Took the role of Naismith by playing progressive passes forward to the frontmen. Some came off some didn't but the positivity was there. Was beaten in the air for Millwall's opener but it was more to do with the delivery. Didn't do a lot wrong.
Timm Klose (off 61, Kalas) - 7
Had to play the majority of the game with heavy strapping to his head after taking a blow midway through the first half. Booked for bringing down his opponent. A decent cameo but came off on the hour for Kalas.
Rob Atkinson - 6
Won an awful amount of headers with Millwall's direct approach. Confident with his mazy runs forward although one or two of them didn't come off. Can't be attributed to any of Millwall's goals.
Mark Sykes (off 61, Martin) - 6
Most notable contribution in the first half came when he cleared a goalbound header off the line. Almost assisted Semenyo in the opening couple of minutes.
Jay Dasilva (off 66, Pring) - 5
Had plenty of opportunities to get deliveries into the box but the end product was disappointing. Seemed to lack confidence to take on his man which was frustrating because he clearly has the ability. Came off for Pring.
Joe Williams - 6
A couple of nice passes and did well to keep the ball under pressure when deep in his own half, except for one scare in the second half. Was the deeper of the two midfielders.
Alex Scott - 6
Was determined to make something happen going forward. Certainly City's most consistent player during this run of form. Must have felt frustrated out there and didn't see as much as the ball as he would have liked. Conceded a penalty right at the end which was well saved.
Andi Weimann - 5
Couldn't link the play between midfield and attack in the first half but showed plenty of commitment to get back and cover for Sykes. Was more involved in the second half and seemed to play closer to Semenyo before moving out to right wing-back. Seemed to then drift out of the game.
Antoine Semenyo - 6
Could have scored in the opening two minutes but failed to get good enough contact on Sykes' low delivery. Flashed an effort across goal in the second half before his tussle with Jake Cooper. Played his part in the equaliser by spreading the ball out wide to Pring instead of shooting. Still looks a yard off the pace on his return from injury.
Tommy Conway (off 61, Wells) - 5
Struggled in the first half and was too slow to react to prevent Millwall scoring their opener. Didn't happen for him today, looked a little flat-footed and jaded. Was replaced by Wells on the hour mark.
Substitutes
Tomas Kalas (on 61, Klose) - 5
Great to see him back but looked a little rusty. His first involvement was a late challenge on his opponent before taking a big knock to the face. Impacted O'Leary for Millwall's second.
Chris Martin (on 61, Sykes) - 5
Was involved in the equaliser when he fed the ball to Semenyo but couldn't get himself involved playing behind the two forwards.
Nahki Wells (on 61, Conway) - 5
Like Martin, couldn't get involved. Was more to do with City's lack of creativity going forward.
Cam Pring (on 66, Dasilva) - 7
Made an instant impact on his introduction and played a great cross that was turned into his own net by Jake Cooper.
Dylan Kadji (on 90, Vyner) - N/A
Subs not used: Bentley, King
SIGN UP: For our daily Robins newsletter, bringing you the latest from Ashton Gate
READ NEXT