Rochdale threatened to stage a dramatic late recovery after Ryan Delaney reduced their arrears with seven minutes left, but a youthful Middlesbrough side successfully held on.
With his side due to face Leeds in a top-of-the-table Championship clash on Friday night, Boro boss Tony Pulis made 10 changes from the side that beat West Brom last Friday with only centre-back Daniel Ayala retaining his place.
Perhaps predictably the alterations resulted in a stuttering opening until Boro claimed the lead eight minutes before the break. Hugill headed Marcus Tavernier’s right-wing cross against the base of a post and Johnson was on hand to drive the rebound into the far corner.
Fletcher almost doubled the hosts’ lead on the stroke of half-time, but he fired a low shot wide.
Boro made it 2-0 nine minutes after the restart. Johnson crossed from the left and Hugill powered home an eight-yard header to claim his first Middlesbrough goal. Harry Chapman curled a 65th-minute shot against the base of a post before Delaney set up a nervy conclusion.
Middlesbrough: Lonergan, Ayala (Spence 46), Wood-Gordon, McNair, Mahmutovic, Besic (Brahimi 46), Leadbitter, Tavernier, Johnson, Hugill (Chapman 59), Fletcher. Unused substitutes: Konstantopoulos, Walker, Malley, Liddle.
Rochdale: Norman, Delaney, Randall (Rafferty 57), McGahey, Cannon, Michael Williams, Camps, Inman (Dooley 62), Ntlhe, Andrew, Henderson (Gillam 74). Unused substitutes: Jordan Williams, Rathbone, Moore, Adshead.
Referee: Ben Toner (Lancashire).