The keeper allowed Dortmund back into the game on the stroke of half-time as his spilled a corner in the box which Aubameyang eventually put home. He could have done better on Piszczek's goal too.
Had a solid evening in the heart of the defence. He kept a close watch on Lewandowski and was never too far from him. His judgement in the tackle was frequently impressive.
Was at times a bit sloppy in possession and it took a great clearance from Volland to stop Reus from slotting home after one such error. Struggled up against Piszczek and Blaszczykowski.
Picked his moments to push forward and help out his team-mates. Such consideration was needed to avoid allowing Aubameyang too much space on the left, and he succeeded in doing just that.
The centre-back made some important tackles inside the area which helped restrict BVB's chances. He was partly to blame for the visitors' first goal but was largely a rock at the back.
Was extremely dynamic and had a couple of great efforts on goal, one of which rattled the crossbar, but he was also combative in midfield.
Looked to orchestrate the play with his direct running and clever passing. He assisted Schipplock's opener with a perfectly-weighted through-ball and his vision to find Rudy was also key to his team's second of the day.
Showed some high-quality distribution in midfield that pushed his team forward and encouraged them to get at Dortmund. He committed Durm which created space for Volland to score the second, which he assisted.
Made a number of darting runs in behind the defence but also showed his ability to hold up the play and involve his team-mates with quick feet. Scored the opening goal with a lovely finish.
An extremely lively performance as he regularly made diagonal runs from wide areas to put the BVB defence under pressure. Made a crucial challenge to deny Reus a tap in and showed great composure to slot home Hoffenheim's second.
He was a peripheral figure for much of the afternoon and was withdrawn midway through the second half.
Perhaps went to ground a bit too easily on the opening goal as Schipplock lifted it over him. There was little he could do to keep out Volland's shot for the second.
Was typically adventurous but usually white-hot link-up play with Blaszczykowski was not quite there. Made a number of overlapping runs that paid dividends as he equalised in the second half.
The youngster continued his run in the side due to injuries and suspensions. He did not look completely out of his depth, but was lacking in awareness.
Rarely pushed forward to support Aubameyang and quickly became frustrated when there was a lack of other options. He was far too quick to go to ground as Rudy supplied the assist for Volland's goal.
Alongside Sarr he should have provided the cool, experienced head, but he regularly became flustered by the movement of the Hoffenheim forwards.
The midfielder tracked back regularly to help add some experience and cohesion among the defensive ranks.Made a number of important challenges but lacked the pace to slot back in when Hoffenheim countered.
Was denied an early goal as Lewandowski attempted to intervene with his shot from an offside position. Attempted to orchestrate things for his side, but was guilty of trying to be far too intricate most of the time.
Did a good job of linking the defence to attack, regularly switching the play with searching passes to his team-mates. His delivery was impressive particularly when he picked out Piszczek for the equaliser.
Linked well with his team-mates from the right flank but rarely gave the impetus to an attack. He was withdrawn midway through the second half.
Scored with a simple finish from inside the six-yard box, but failed to use his pace often enough down the left. Created very little for his team-mates.
The striker displayed good movement during the early exchanges,held the ball up well and brought his team-mates in on the action.
Came on for Herdling in the 71st minute and was far more involved than his team-mate in the little time that remained.
Replaced Schipplock with just over 20 minutes left and created some great chances for his team to steal a winner with his super ability from dead balls.
Brought on for Rudy in the final minute of normal time.
Came on for Aubameyang in the 66th minute but struggled to influence the game.
Replaced Blaszczykowski in the 66th minute and had an instant impact, pulling a save from Grahl. Created numerous opportunities for his team and could have got a goal himself.
Brought on for Reus with three minutes left and missed an absolute sitter which could have won the game.