Marvin Johnson’s second-half free-kick made the difference at the Riverside, but Woodgate’s side had to cling on in the closing stages as Reading created a succession of late chances.
Darren Randolph made three crucial late stops, and Middlesbrough’s defenders produced a succession of last-gasp blocks as they secured their second clean sheet of the season.
Woodgate said: “I thought we deserved to win it. I thought towards the end of the game they piled the pressure on, but we stood strong. Like I said in the week, we needed to find that inner steel, that belief and I thought we did that.
“I thought we deserved to win the game. I thought we looked very dangerous on the counter-attack at times and could have been a couple of goals up.
“It was well deserved, and I was so pleased for the lads, they gave me everything.
“We ground it out towards the end, that’s what I said I wanted from the team in the week and I thought they gave me that. I thought the subs that came on as well were excellent, they shored it up and did well.
“Does that result make a statement? I’d like to think so. We’re four unbeaten now, and it’s hard to go four unbeaten in this league but we’ve done that.
“We look forward to the next game now against Cardiff, there’s momentum with the team at the minute and we’ll keep on working and doing what we’re doing every day on the training pitch.”
Jose Gomes defended his decision to leave George Puscas, Lucas Joao and Pele out of his Reading starting line-up, even though the trio had claimed four goals in the opening month of the season.
Puscas and Joao both came on from the substitutes’ bench as Reading chased the game in the closing stages, but Gomes stood by his decision to name Yakou Meite and Lucas Boye ahead of them, citing their performance in last month’s 2-0 home defeat to Charlton as the reason for their demotion.
Gomes said: “Puscas, Joao and Pele didn’t start. Pele and Puscas had travelled for their national team, but that was not the only reason why they did not play. The reason was that I did not like the way that they played in the last game.
“I have six strikers, they are all good players, and they must all fight for their position. They must give everything they have inside them. It is my obligation as their manager to demand that.”
Middlesbrough: Randolph, Dijksteel, Fry, Shotton, Bola (Ayala 68), McNair, Clayton, Wing (Saville 86), Johnson (Tavernier 90), Assombalonga, Fletcher. Unused substitutes: Browne,Malley,Walker,Pears.
Reading: Rafael Cabral, Moore, Morrison, McIntyre (Lucas Joao 67), Yiadom, Ejaria, Swift, Rinomhota (Puscas 67), Richards, Boye (Loader 84), Meite. Unused substitutes: Virginia, Blackett, Adam, Pele.
Referee: Robert Jones (Merseyside).