Two stunning goals from Blackburn winger Morten Gamst Pedersen helped bring the curtain down on Manchester City's recent revival.
Pedersen struck before half-time with a powerful header and then followed up on the hour with a sweeping free-kick before substitute Matt Derbyshire completed the triumph in the 90th minute.
It could have been a different story for City if referee Phil Dowd had spotted a clear handball from David Bentley before Pedersen had broken the deadlock.
Instead an unbeaten of run of four matches over the Christmas and New Year period that had yielded 10 points was brought to a sudden halt at Eastlands.
The victory, Blackburn's first at City for 12 years, means manager Mark Hughes' side are back in the top half of the table for the first time in three months.
It also proved they can cope adequately without the services of now former captain Lucas Neill after his decision to move to West Ham, with that deal likely to be completed on Monday.
Hughes has Liverpool's Stephen Warnock lined up as replacement for the Australian, but with Neill on his way Hughes was forced into a late reshuffle for this game.
Robbie Savage was surprisingly handed the captain's armband and, while he may not be many people's choice as a leader who sets the ideal example, he steered the side through a tricky encounter.
Rovers were composed and accomplished, although they failed to make any headway until taking the lead just before the interval.
Prior to that they had dominated possession, passing the ball neatly and crisply, but with City again resilient in defence.
Instead, it should have been Stuart Pearce's side taking the lead, only for referee Dowd to somehow miss Bentley's handball on the goalline in the 31st minute.
From City's second corner, whipped into the area by Ousmane Dabo, Micah Richards rose unchallenged to power in a header.
Replays showed Bentley attempting to clear with his right foot before the ball struck his outstretched left arm.
Despite standing just five yards away, and with an unobstructed view of the incident, Dowd waved away the penalty appeals that followed from the City players.
As Rovers had conceded more penalties this season than any other Premiership team with nine coming into this game, many of which Hughes has contested, they were perhaps due an element of fortune.
Yet while lady luck smiled on Blackburn in that respect, Hughes immediately suffered another defensive blow with the loss of Andre Ooijer.
As Bentley was using his arm to good effect, City striker Bernardo Corradi fell on Ooijer who appeared to severely twist his ankle as he too went to ground on top of the Italian.
Several minutes of treatment followed before he was taken off on a stretcher and replaced at right-back by Brett Emerton.
After captain Richard Dunne headed another corner from Dabo over the crossbar, Bentley then played a key role in helping Blackburn break the deadlock 70 seconds from the interval.
Delivering a piercing cross from the right wing, Pedersen raced onto the inch-perfect ball to plant a bullet header past Nicky Weaver who previously had had nothing to do.
Pearce opted for a half-time shake-up by bringing on DaMarcus Beasley and Georgios Samaras for Trevor Sinclair and Corradi.
Within six minutes of the restart Samaras came within inches of hauling City level.
However, a curled shot from the edge of the area shaved the left-hand post after deflecting off the head of Zurab Khizanishvili.
Amid a spate of bookings for Rovers players - Stephane Henchoz, Emerton and James McEveley - Benni McCarthy almost made it 2-0.
Savage first won a 50-50 challenge with Dunne in midfield, with the ball springing forward to Shabani Nonda.
A short ball on to McCarthy allowed the South African to run at the City defence before unleashing a 19-yard left-foot drive that flashed past Weaver's left-hand post.
After Dunne joined the yellow card recipients in the 61st minute, Rovers then duly opened up a two-goal cushion.
A foul from Richards on Pedersen led to the Norway international curling a stunning 22-yard free-kick around the wall to take his tally to five for the season.
City should have pulled one back in the 66th minute, only for Friedel to make a point-blank save to Vassell's side-foot volley after being picked out by Beasley's precision left-wing cross.
That was as close as City came before Derbyshire wrapped up the points late on with a precise finish inside Weaver's left-hand post.
Teams
Man City Weaver, Richards, Dunne, Distin,Trabelsi (Miller 75), Sinclair (Beasley 46), Ireland, Dabo,Jordan, Vassell, Corradi (Samaras 46).
Subs Not Used: Isaksson, Johnson.
Booked: Dunne.
Blackburn Friedel, Ooijer (Emerton 35), Henchoz,Khizanishvili, McEveley, Bentley, Kerimoglu (Gallagher 84),Savage, Pedersen, Nonda (Derbyshire 78), McCarthy.
Subs Not Used: Enckelman, Peter.
Booked: Henchoz, Emerton, McEveley.
Goals: Pedersen 44, 62, Derbyshire 90.
Att: 36,590
Ref: P Dowd (Staffordshire).