Lukas Jutkiewicz marked his first Middlesbrough start of the season with two goals to end leaders Blackburn's unbeaten Championship start.
Jutkiewicz, who missed the first month of the season following a summer knee operation, drove in an early opener.
The striker then guided in a header from Mustapha Carayol's left-wing cross to ensure Boro's first away league win.
Grant Hanley headed in for Blackburn late on, before Jordan Rhodes had a penalty appeal rejected.
But Rovers boss Steve Kean faced more chants demanding his departure at full-time from fans angry at the direction the club have taken under his management.
Middlesbrough had failed to pick up any points from their first three Championship away games, while Blackburn went into the game having made their best start to a season since 1994-95, when they won the Premier League.
But it was the visitors who took the lead in the seventh minute, as Jutkiewicz flicked a long ball on to Marvin Emnes, then collected the return and outpaced Blackburn defender Gael Givet before beating keeper Paul Robinson at his near post.
The home side struggled to respond to the early goal, and were lucky not to concede another when Grant Leadbitter's inswinging free kick drifted just beyond the far post as Robinson floundered.
"Middlesbrough totally deserved the three points. You wonder how they haven't got more away points this season. They took total control from the get-go. But when Grant Hanley headed that late goal for Blackburn, it was game on. It's a shame there are so many 'Kean out' chants, because they distract from the fact that Blackburn gave it a really good go."
But they almost equalised right at the end of the first half, when Fabio Nunes's left-wing cross eluded keeper Jason Steele and glanced off the crossbar.
The start of the second half was delayed briefly when a sprinkler started spraying water at the Darwen End, and the match was then held up twice as two more went off behind the goal.
Carayol went close for Middlesbrough in the first minute of the second half when he sprinted in from the left past Bradley Orr and drove in a low cross-shot that Robinson half-stopped and Olsson cleared.
But the Gambian winger, a summer signing from Bristol Rovers, set up the second Middlesbrough goal on the hour with a left-wing cross, with Jutkiewicz pulling away from Hanley to guide a header into the top corner.
Blackburn did enjoy a spell of pressure after that, with Dickson Etuhu, Rhodes and Scott Dann all denied.
Hanley, on as a substitute for shoulder injury victim Olsson, headed in a Nunes cross to set up a frantic finish, which saw Rhodes have a penalty appeal rejected when Justin Hoyte appeared to foul him.
Blackburn manager Steve Kean:
"We didn't get going until much later in the game than we anticipated. We just left it too late. If we had scored a bit earlier, we might have got something out of the game.
"We felt we should have had a penalty late on. Jordan Rhodes had his standing leg caught. We're disappointed to lose the unbeaten run, but we're still top."
Middlesbrough manager Tony Mowbray:
"We deserved to win. Not many people could say we didn't. We were disappointed to come in at half-time only 1-0 up. And in the end, we showed the qualities we needed to see it out.
"Sometimes Lukas gives us the platform to play off the front. You saw that tonight in the performances of Marvin Emnes, Mustapha Carayol and Josh McEachran."
Live Text Commentary
Full Time The final whistle goes and the game is over.90:00 +3:06
Direct free kick taken by Justin Hoyte.90:00 +3:06 Booking
Booking Booking for Bradley Orr.90:00 +2:38
Dickson Etuhu takes a shot. Justin Hoyte gets a block in. Bradley Orr concedes a free kick for a foul on Marvin Emnes.90:00 +2:07
Corner taken right-footed by Mauro Formica from the right by-line, Andre Bikey manages to make a clearance.90:00 +1:26
Marvin Emnes produces a right-footed shot from deep inside the penalty box which goes wide of the right-hand upright.90:00 +0:13
Corner taken left-footed by Fabio Nunes, Effort on goal by Paul Robinson from deep inside the penalty area misses to the right of the goal.89:34 Booking
Booking Jason Steele receives a yellow card.89:15
Fabio Nunes fouled by Josh McEachran, the ref awards a free kick. Indirect free kick taken by Paul Robinson.88:21
Fabio Nunes provided the assist for the goal.88:21 Goal scored
Goal! - Grant Hanley - Blackburn 1 - 2 Middlesbro Grant Hanley finds the net with a headed goal from close range. Blackburn 1-2 Middlesbrough.86:30
Free kick taken by Paul Robinson.86:30 Substitution
Substitution Merouane Zemmama on for Mustapha Carayol.86:30 Substitution
Substitution Nicky Bailey is brought on as a substitute for Grant Leadbitter.86:30
Mustapha Carayol takes a shot. Save by Paul Robinson. Unfair challenge on Miguel Nuno Gomes by Grant Leadbitter results in a free kick.82:51 Substitution
Substitution Seb Hines joins the action as a substitute, replacing Jonathan Woodgate.82:51
Miguel Nuno Gomes has a header from inside the six-yard box and clears the crossbar.82:16
Fabio Nunes has an effort at goal from just outside the box which goes wide of the right-hand post.79:43
Jordan Rhodes gives away a free kick for an unfair challenge on Andre Bikey. Direct free kick taken by Jason Steele.77:33
Unfair challenge on Fabio Nunes by Mustapha Carayol results in a free kick. Paul Robinson takes the free kick.
Unfair challenge on Grant Leadbitter by Dickson Etuhu results in a free kick. Grant Leadbitter produces a strike on goal direct from the free kick, Paul Robinson makes a brilliant save.75:27
Justin Hoyte concedes a free kick for a foul on Fabio Nunes. Free kick crossed right-footed by Danny Murphy, clearance made by Jonathan Woodgate.74:31
Josh McEachran delivers the ball, clearance by Scott Dann.73:07
Justin Hoyte concedes a free kick for a foul on Fabio Nunes. Danny Murphy takes the free kick, Scott Dann takes a shot. Save by Jason Steele.70:06
Fabio Nunes takes a shot. Justin Hoyte gets a block in. Fabio Nunes takes a shot. Blocked by Jonathan Woodgate. Inswinging corner taken right-footed by Mauro Formica played to the near post.69:38
Corner taken by Fabio Nunes, clearance made by Andre Bikey.68:26
Jordan Rhodes takes a shot. Andre Bikey gets a block in. Inswinging corner taken by Danny Murphy from the left by-line. Inswinging corner taken by Danny Murphy.68:02
Lukas Jutkiewicz gives away a free kick for an unfair challenge on Gael Givet. Danny Murphy takes the free kick.67:10
Dickson Etuhu produces a right-footed shot from just outside the penalty area that goes harmlessly over the target.65:59
Unfair challenge on Jordan Rhodes by Jonathan Woodgate results in a free kick. Danny Murphy crosses the ball in from the free kick, clearance by Andre Bikey.62:30
Unfair challenge on Andre Bikey by Jordan Rhodes results in a free kick. Direct free kick taken by Andre Bikey.60:43
Mustapha Carayol provided the assist for the goal.60:43 Goal scored
Goal! - Lukas Jutkiewicz - Blackburn 0 - 2 Middlesbro Lukas Jutkiewicz grabs a headed goal from inside the penalty area. Blackburn 0-2 Middlesbrough.58:20
Marvin Emnes concedes a free kick for a foul on Danny Murphy. Indirect free kick taken by Danny Murphy.58:00
Grant Leadbitter takes a shot. Save by Paul Robinson.55:04
Inswinging corner taken by Grant Leadbitter, Marvin Emnes gives away a free kick for an unfair challenge on Paul Robinson. Paul Robinson restarts play with the free kick.52:17
Josh McEachran takes the free kick.52:17 Booking
Booking Gael Givet is given a yellow card.52:12
Marvin Emnes fouled by Gael Givet, the ref awards a free kick.51:27
Inswinging corner taken left-footed by Danny Murphy played to the near post, clearance made by Andre Bikey.50:52
A cross is delivered by Bradley Orr, clearance by Andre Bikey.47:59 Substitution
Substitution Grant Hanley joins the action as a substitute, replacing Martin Olsson.47:11
The ball is crossed by Bradley Orr, save by Jason Steele.46:02
Mustapha Carayol takes a shot. Paul Robinson makes a save. Mustapha Carayol has an effort at goal from just outside the penalty box which goes wide of the left-hand post.45:01
The second half kicks off.45:01 Substitution
Substitution Mauro Formica comes on in place of Bruno Ribeiro.45:00 +2:23 Half time
Half Time The referee blows for half time.45:00 +1:51
Fabio Nunes delivers the ball.45:00 +0:03
Lukas Jutkiewicz takes a shot. Save by Paul Robinson.44:32
Outswinging corner taken by Danny Murphy.43:48
Marvin Emnes delivers the ball, Scott Dann gets a block in.42:08
Jonathan Woodgate takes the direct free kick. Mustapha Carayol produces a cross.42:08 Booking
Booking The referee books Martin Olsson for unsporting behaviour.42:03
Free kick awarded for an unfair challenge on Josh McEachran by Martin Olsson.39:20
Grant Leadbitter takes a shot. Gael Givet gets a block in.36:54
Fabio Nunes gives away a free kick for an unfair challenge on Jason Steele. Jason Steele restarts play with the free kick.35:53
Josh McEachran gives away a free kick for an unfair challenge on Bruno Ribeiro. Direct free kick taken by Bradley Orr.35:13
Mustapha Carayol takes a shot. Scott Dann gets a block in.34:35
Grant Leadbitter fouled by Danny Murphy, the ref awards a free kick. Jonathan Woodgate restarts play with the free kick.33:10
Free kick awarded for a foul by Bradley Orr on Mustapha Carayol. Direct free kick taken by Andre Bikey.31:37
Handball decision goes against Grant Leadbitter. Danny Murphy takes the indirect free kick.30:50
Shot by Gael Givet from outside the box goes high over the target.30:13
Inswinging corner taken by Danny Murphy from the left by-line.27:57
The official flags Mustapha Carayol offside. Paul Robinson restarts play with the free kick.25:41
Scott Dann takes a shot. Save by Jason Steele.24:37
Grant Leadbitter takes a shot from just outside the penalty area clears the crossbar.21:30
Bradley Orr challenges Marvin Emnes unfairly and gives away a free kick. The free kick is delivered right-footed by Grant Leadbitter from left wing.18:40
Free kick awarded for a foul by Mustapha Carayol on Fabio Nunes. Paul Robinson takes the direct free kick.17:58
Marvin Emnes takes a shot. Blocked by Gael Givet. Josh McEachran takes the inswinging corner, save by Paul Robinson.16:49
The ball is delivered by Mustapha Carayol, blocked by Scott Dann. Grant Leadbitter takes the inswinging corner, Marvin Emnes takes a shot. Blocked by Fabio Nunes. Inswinging corner taken left-footed by Josh McEachran from the right by-line, save by Paul Robinson.15:48
George Friend delivers the ball, Gael Givet makes a clearance.15:03
Bruno Ribeiro crosses the ball, Jonathan Woodgate gets a block in. Corner taken by Danny Murphy, Jason Steele makes a comfortable save.14:39
Centre by Fabio Nunes.12:20
The ball is delivered by Bradley Orr.11:30
Josh McEachran takes a shot. Danny Murphy gets a block in.10:57
Free kick awarded for a foul by Danny Murphy on Marvin Emnes. Josh McEachran takes the direct free kick.10:18
Martin Olsson crosses the ball, Andre Bikey manages to make a clearance.9:54
Foul by Josh McEachran on Martin Olsson, free kick awarded. Paul Robinson takes the indirect free kick.8:26
Corner from the left by-line taken by Grant Leadbitter, clearance made by Fabio Nunes.7:46
Mustapha Carayol produces a cross.6:34
The assist for the goal came from Marvin Emnes.6:34 Goal scored
Goal! - Lukas Jutkiewicz - Blackburn 0 - 1 Middlesbro Lukas Jutkiewicz grabs a goal from close in to the bottom right corner of the goal. Blackburn 0-1 Middlesbrough.4:38
Foul by Bruno Ribeiro on Josh McEachran, free kick awarded. Free kick crossed right-footed by Grant Leadbitter from left channel, save by Paul Robinson.4:13
The ball is swung over by Justin Hoyte, clearance by Scott Dann.3:14
The ball is crossed by Fabio Nunes, save by Jason Steele.0:00
The referee gets the game started.
Live data and text provided by our data suppliers