Lewis Wing scored a neat 37th-minute goal but Birmingham hit back thanks to Che Adams’s 79th-minute equaliser, only for Boro to pick themselves up three minutes later and win it through substitute Britt Assombalonga.
Pulis said after victory against former Boro manager Garry Monk’s side: “We were by far the better team in the first half. I know we should have had two penalties in the first half so instead of being one-up at half-time we should have been three-up at least.
“In the second half, they played very direct. I’ve nothing against that because that is the way they play. They have two good forwards, Adams and (Lukas) Jutkiewicz, up there and they put us under enormous pressure.
“We defended extremely well and when they equalised it was going to be tough. But it was a terrific through ball from Wing and Assombalonga finished with aplomb. Winning so well away from home shows the character of the team. We had to show it in the second half when we had to dig in against some determined opposition.
“It was a great response to hit back with the winning goal so quickly after Birmingham had equalised.”
It was only Birmingham’s second Championship home defeat in 19 games and Monk said: “It was very harsh on the players to play so well and get nothing from the game.”
Birmingham City: Camp, Colin, Morrison, Dean, Pedersen, Jota, Gary Gardner (Craig Gardner 46), Kieftenbeld (Vassell 80), Maghoma, Jutkiewicz, Adams. Unused substitutes: Mahoney, Solomon-Otabor, Dacres-Cogley, Trueman, Harding.
Middlesbrough: Randolph, Fry, Ayala, Batth, Friend, Clayton, Besic (Downing 69), Howson, Wing (McNair 87), Saville, Hugill (Assombalonga 70). Unused substitutes: Fletcher, Tavernier, van La Parra, Lonergan.
Referee: G Scott (Oxfordshire).