Ryan Allsop 6
Was reasonably solid. Played the role of pantomime villain for much of the evening with the home crowd. Perhaps should have done better with the first goal.
Mahlon Romeo 6
Partly responsible for keeping Ryan Giles so quiet in the first half, but was one of many to struggle after the break.
Perry Ng 7
Scored a stunning effort in the first half, but also seemed to fade as the game went on. Subbed.
READ MORE: Middlesbrough 2-3 Cardiff City: First-half blitz sees Bluebirds through after spirited Boro comeback
Cedric Kipre 8
Solid. Stood up to the physical battle from Rodrigo Muniz very well, and made a couple of really neat interceptions. Kept his composure when others were losing theirs.
Jack Simpson 8 (STAR MAN)
A second start of the season. Repaid Steve Morison's faith and then some. Put his body on the line numerous times, and did brilliantly to keep out Jones at the death. Dragged City over the line.
Callum O'Dowda 7
An absolute terror out wide in the first half, but just appeared to run out of steam a little in the second half. Fitness perhaps not quite there yet. Took his goal nicely. Subbed.
Ryan Wintle 7
Set-piece delivery on point as usual, and added a welcome extra layer to the defence, but wasn't quite as influential in a second half where Cardiff saw precious little of the ball.
Andy Rinomhota 6
Ran between the lines brilliantly, and pressed the Boro defence superbly in the first half. Played his part in the second and third goals, but intensity fell of a cliff in the second half.
Joe Ralls (c) 6
Was a figurehead in a number of the neat little triangles Cardiff played in the middle of the park. Unlucky to be forced off injured.
Mark Harris 7
Got behind the Boro defence on a number of occasions before the break, and looked very comfortable playing off Robinson up front. Took his goal really nicely. Huffed and puffed but couldn't have a say in the second 45. Subbed.
Callum Robinson 7
Absolutely superb on the edge of the box with his back to goal. Can't argue with two assists. Constantly looked like he wanted the ball at every possible opportunity. Looked a little isolated after the break, mind. Subbed.
Subs
Niels Nkounkou (on for O'Dowda 67) - Couldn't really offer the same level of bite out wide. Pretty quiet - 6
Romaine Sawyers (on for Ralls 37) - Caught napping for Boro's first. Looked far too lethargic. A poor outing - 5
Rubin Colwill (on for Harris 79) - Couldn't really make a difference - 5
Sheyi Ojo (on for Robinson 67) - Saw very little of the ball as Cardiff were put onto the back foot in the second half - 5
Curtis Nelson (on for Ng 79) - Dug in as Cardiff held on - 6
READ MORE: