Second-half goals from Arnel Jakupovic (2) and Tom McAloon clinched the win for the hosts, as the Blues were left to rue missed chances in the opening 45. Brandon Barker bagged a late consolation.
Simon Davies’ side headed into the clash looking to close the gap on the top two, whilst bottom-of-the-table Boro needed three points to kick-start their relegation fight.
The visitors fielded a much-changed line-up from the one that drew 1-1 with Sunderland. Billy O’Brien, Sam Tattum, George Glendon, Will Patching and Javairo
Dilrosun replaced Angus Gunn, Cameron Humphreys, Tosin Adarabioyo, Aleix Garcia and Isaac Buckley.
The first chance of the game fell to Sinan Bytyqi on 12 minutes, as the 21-year-old blazed over Angelino’s cut-back.
George Glendon was then played through by Bersant Celina but saw his effort deflected wide.
At the other end, Boro’s first opportunity arrived courtesy of Jakupovic, who went close with a 25-yard free-kick.
City then regained control and continued to test Joseph Fryer. Barker’s strike towards the top corner was well-saved and the hosts’ shot-stopper made another fine stop to deny Dilrosun.
Angelino then delivered a dangerous cross which was cleared only as far as Barker - but Fryer was once again equal to the low strike.
Boro improved after the restart and hit the bar within ten minutes, as Jordan Jones smashed Nathan McGinley’s delivery onto the woodwork.
The home side then broke the deadlock when Jakupovic swept home from 15 yards, and the lead was doubled shortly after as McAloon headed a corner past O’Brien.
The result was put beyond doubt with five minutes of normal time remaining as Jakupovic converted O’Brien’s parry from Jones’ cross.
There was time for City to net a consolation in injury time through Barker, who drilled into the corner - but it was too little, too late.
Next up for Davies’ side is a trip to Reading on Monday 11 April (7pm)...