Jay Rodriguez fired home a late penalty at The Hawthorns to earn West Brom a 2-2 draw with Martin O’Neill’s Nottingham Forest, who had twice led in the match.
A Stefan Johansen own goal gave Forest the half-time lead, only for Jacob Murphy to equalise at the start of the second half.
Ryan Yates restored Forest’s advantage in the 65th minute but they were denied victory when Alexander Milosevic fouled Dwight Gayle, allowing Rodriguez to net from the penalty spot for his 17th goal of the season.
Famara Diedhiou's injury-time penalty maintained Bristol City's winning run as they came from behind to beat QPR 2-1 at Ashton Gate.
The game looked to be heading for a draw after Niclas Eliasson’s effort cancelled out Matt Smith’s opener for the visitors but Diedhiou held his nerve to convert the spot-kick after Luke Freeman had fouled Josh Brownhill.
It was a ninth straight win for City in all competitions, with their seventh in the league moving them up to fifth in the table.
There was an important win for Bolton towards the bottom of the table as Callum Connolly's second-half goal gave them a 1-0 victory over Birmingham at St Andrews.
Rotherham staged a spirited fightback at Hull to earn a valuable point in their battle against relegation.
The hosts were in control through goals from Jarrod Bowen and Fraizer Campbell but a second-half reply from Limerick man Anthony Forde and a Robbie McKenzie own goal saw the match finish 2-2.
Millwall and Sheffield Wednesday also shared the points in a goalless draw at The Den.