Mark Viduka ended his barren spell in front of goal with a brace as Middlesbrough saw off Manchester City.
Boro went in front when Viduka controlled Stewart Downing's pass and chipped the advancing David James.
City levelled when Robbie Fowler netted from Jon Macken's flick but Boro hit back with a fabulous Viduka finish from Jimmy Floyd Hasselbaink's neat lay-off.
Hasselbaink struck a 25-yard free-kick before Bradley Wright-Phillips marked his league debut with a late strike.
The fact that Boro were desperately hanging on for the three points at the end belied their early domination and Steve McClaren will be unhappy they let City back into the contest.
In-form midfielder Bolo Zenden created Boro's first half-chance, floating the ball into Hasselbaink's path, the Dutchman just failing to make a meaningful contact.
After Fowler had wasted an opening at the other end Boro took the lead, and Viduka's goal ended a run of 12 scoreless games for the Australian.
Downing fed the striker on the edge of the box and his first touch brilliantly eased him past Richard Dunne before a cool lifted finish took the ball past James and into the net.
Boro almost doubled their advantage moments later, this time Hasselbaink's industry creating another opening for Viduka, but the big striker's attempted chip was deflected wide.
The hosts were enjoying by far the greater share of possession and Downing, a revelation in the left-wing berth this season, was providing Danny Mills with all kinds of problems.
Another sumptuous ball from the 19-year-old played in Hasselbaink, but his cross fell behind Viduka and neither he nor Zenden could force the ball past James as Mills cleared the danger.
But for all their domination Boro could not find the cushion of a second goal, and City made them pay six minutes before the break.
A hopeful punt into the box from Sylvain Distin was flicked on by Macken and Fowler found space to control the ball and smash it past Schwarzer from eight yards to stun the home crowd.
McClaren took off an out-of-sorts Szilard Nemeth at the break and replaced him with Doriva, and nine minutes later they regained the lead.
Viduka picked the ball up on the edge of the box, played a fabulous one-two with Hasselbaink and curled the ball sumptuously with the outside of his right-foot past James' despairing dive.
Having seen Viduka steal the limelight Hasselbaink was desperate for a piece of the action, and after he had been fouled 25 yards out by Dunne, the Dutchman lashed the resulting free-kick into the corner of the net.
Kevin Keegan brought on Bradley Wright-Phillips for his Premiership debut with 15 minutes to go, and the youngster was unlucky not to win a free-kick after a promising run was abruptly ended on the edge of the Boro box.
But Shaun's younger brother soon got his name on the scoresheet, collecting Mills' header and swivelling six yards out to wrong-foot Schwarzer in the Boro goal.
City sensed an equaliser was there for the taking and Bradley Wright-Phillips lashed a volley wide before Joey Barton's right-foot rocket stung the palms of Schwarzer.
Middlesbrough: Schwarzer, McMahon, Southgate, Cooper, Reiziger, Nemeth (Doriva 45), Parlour, Zenden, Downing, Viduka, Hasselbaink (Bates 90).
Subs Not Used: Nash, Job, Davies.
Goals: Viduka 9, 54, Hasselbaink 65.
Man City: James, Mills, Dunne, Distin, Jordan, Shaun Wright-Phillips, Bosvelt, Barton, Sibierski (Flood 76), Macken (Bradley Wright-Phillips 76), Fowler.
Subs Not Used: Sommeil, Onuoha, Waterreus.
Booked: Barton, Mills, Jordan.
Goals: Fowler 39, Bradley Wright-Phillips 80.
Ref: G Poll (Hertfordshire).