Two quickfire goals from Jason Knight and Matty James gave Liam Manning’s side a well-deserved lead at the Riverside Stadium.
Samuel Silvera pulled a goal back in second-half stoppage time for Boro, but it wasn't enough.
The result sees City move up one place into 13th, six points off the play-off places.
It was Boro, though, who almost took an early lead through Hayden Hackney, but Zak Vyner made a last-ditch block.
The opening for Michael Carrick’s side didn’t affect City’s front-foot approach, and on the 16-minute mark, the Robins took the lead.
Rob Dickie stepped into midfield and threaded a perfectly weighted pass to Knight, who composed himself and cleverly manoeuvred around Tom Glover to slot home.
Just one minute later, the visitors doubled their advantage.
James latched onto a loose ball deep in Boro territory and struck an early curled effort towards Glover’s near post.
The shot pinged off the inside of the post before nestling into the Middlesbrough net for 2-0.
The Robins were content to allow Boro to dominate possession and try to hit on the counterattack as they took a healthy lead into the break.
Carrick’s side were quickly out of the blocks second half and Sam Greenwood came close three times before the hour mark.
As the home crowd began to urge their team on, the visitors struggled to keep possession, and Manning grew frustrated on the touchline.
The hosts thought they’d pulled a goal back when Greenwood fired into the roof of Max O’Leary’s net from a tight angle, but the offside flag was up.
Carrick's side did eventually get their goal when the ball bounced in off Silvera in the dying moments, but City held on for the win.