Having received a rapturous reception from the 19,039 home crowd, Kris Boyd put the buoyant hosts ahead.
But Albert Adomah began the Robins fightback and Marvin Elliott's wonderful strike just after the interval completed the comeback and left Boro without a win in seven games.
Luke Williams orchestrated much of the hosts attacking work and with just three minutes gone, Boyd dragged a snap shot wide of David James' goal with Liam Fontaine doing just enough to put him off.
Scott McDonald's turn and shot from the edge of the box after Boyd rose above Fontaine to flick on had James scrambling to make a save at full stretch.
City offered little in the way of an attacking threat during the opening exchanges.
Boyd mis-kicked as he looked to tap home Mickael Tavares' header back across goal and James raced off his line to smother the ball at the feet of Williams.
The visitors should have forged ahead after 18 minutes when Adomah's cross from the right was met by Jon Stead, who rose highest in between two defenders, but headed over.
A lapse in concentration saw City fall behind in the 30th minute.
McDonald provided an inch-perfect cross from the right for Boyd who had pulled away at the back post.
Boyd, who checked for the offside flag having found himself in acres of space, produced a left-footed cushioned volley, which James got a hand to but could not keep out.
James flung himself towards the top corner to palm away a curling Williams effort and McDonald ghosted in at the back post but lifted his shot over the bar as Boro looked for a second goal.
A fortuitous leveller arrived just five minutes later.
Adomah's goal-bound shot cannoned off Barry Robson, and Jason Steele, who was already going to his left, could do little about it as the ball nestled in the opposite corner.
Having laid siege to the away side's goal prior to the interval, the hosts then fell behind when Elliott came up with a measured strike just four minutes into the second half.
Elliott showed great technique as he collected the ball and picked out the top right-hand corner of Steele's goal from 20 yards, silencing the expectant home support.
Boyd went close again, McDonald failed to keep a shot from the edge of the box under the crossbar and David Wheater's ambitious effort from long distance never really troubled James.
But for Stead's dangerous-looking cross, clear-cut chances were few and far between for both sides after that.
Boro substitute Tarmo Kink unsuccessfully tried his luck from 30 yards and his clever ball into the box minutes later just evaded Boyd.
But his impressive impact was too late in the day as Boro came up short.