Tony Pulis thought Middlesbrough were wasteful in front of goal even though they clinched a valuable three points in the battle for a Championship play-off place by beating Reading.
Adama Traore scored either side of the interval – only his second and third goals of the season – but Grant Leadbitter rattled the post before the Royals set up a tense finale when substitute Chris Martin netted in the 78th minute.
Britt Assombalonga missed the chance to restore Boro’s two-goal cushion when he blazed his 85th-minute penalty over the bar although his side held on for a 2-1 win at the Riverside.
Boro’s north-east rivals Sunderland did them a favour by battling back from 3-0 down to secure a 3-3 draw at sixth-placed Bristol City, who are now just four points ahead of the Teessiders.
Boro boss Pulis, though, focused on his side’s profligacy as he said: “I’m pleased with the win, but obviously disappointed that we’ve not taken our chances that we should.
“I don’t think there’s any question that when Adama gets a second goal we should have won.
I’m pleased with the win, but obviously disappointed that we’ve not taken our chances that we should.
“When you miss a penalty, Patrick Bamford misses from about six yards out on the angle, Grant Leadbitter hits the post and somehow it comes out, so it should really have been five goals there. It was lovely to get them in afterwards and certainly talk about what happened after they scored,” he said.
“There’s certain things we have to do better than we did.”
Middlesbrough: Randolph, Shotton, Ayala, Gibson, Friend, Howson, Leadbitter, Downing (Cranie 90), Traore, Gestede (Assombalonga 79), Bamford (Clayton 66). Unused substitutes: Konstantopoulos, Fry, Harrison, Besic.
Reading: Mannone, Gunter, Tiago Ilori, Moore, Bacuna, Edwards, van den Berg, Aluko, Kelly (Clement 63), McCleary (Kermorgant 74), Bodvarsson (Martin 63). Unused substitutes: Blackett, Jaakkola, Richards, Smith.
Referee: David Coote (Nottinghamshire).