Fraizer Campbell made a goalscoring return after 18 months out injured to earn Sunderland an FA Cup fourth-round replay with Middlesbrough.
After coming on at half-time, Campbell scored on the break to cancel out Barry Robson's superb first-half strike.
Sunderland's Craig Gardner saw an effort controversially ruled out for offside late in the first half.
And James McClean fired wide for the home side in injury time to ensure the sides will meet again at the Riverside.
With Nicklas Bendtner out injured, Sunderland gave a start up front to teenager Connor Wickham, only his sixth since an £8m move from Ipswich Town in the summer.
Middlesbrough also fielded a recent arrival up front with Lucas Jutkiewicz, a £1.3m transfer window buy from Coventry City, leading their line.
The visitors had already signalled their attacking intent when Scott McDonald's shot was well held by the masked Simon Mignolet in the Sunderland goal, while Sebastian Larsson headed wide at the other end.
Robson made his mark on 16 minutes, expertly volleying in after John O'Shea had failed to head away Faris Haroun's right-wing cross.
Sunderland responded well, forcing Danny Coyne into two good saves, both from winger McClean.
They also had an effort ruled out when Gardner, recalled in place of injured hamstring victim Lee Cattermole, collected Kieran Richardson's long pass before firing home.
Gardner had clearly handled the ball as it reached him, but the strike was overruled for offside against Wickham, who did not touch the shot that went in off the post.
Wickham was then withdrawn through injury at half-time and replaced by Campbell, who returned for his first start since August 2010 from a cruciate knee ligament injury.
And he required just 13 minutes to make his mark, sweeping home McClean's square pass from 16 yards after Robson had sloppily conceded possession.
Both teams continued to attack each other, Phil Bardsley almost heading into his own net moments after Campbell's goal before Coyne held David Vaughan's deflected shot at the other end.
McClean found himself in a superb position to settle the contest two minutes into stoppage time, only to slash his left-footed shot wide.
But honours ended even, meaning a replay at the Riverside to decide who will host Arsenal in round five.
Blood was spilt by players on both sides, home defender John O'Shea and visiting midfielder Rhys Williams both looking worse for wear, while Wes Brown left the field with a nasty-looking injury after landing on his shoulder.
- 22 Mignolet
- 02 Bardsley
- 05 Brown (Turner - 60' )
- 11 Richardson Booked
- 16 O'Shea
- 07 Larsson
- 08 Gardner
- 15 Vaughan (Colback - 80' )
- 23 McClean
- 28 Sessegnon
- 10 Wickham (Campbell - 46' )
- 20 Westwood
- 04 Turner
- 14 Colback
- 18 Meyler
- 27 Elmohamady
- 09 Campbell
- 17 Ji Dong-Won
- 21 Coyne (Ripley - 80' )
- 02 Hoyte Booked
- 04 Bates
- 14 Williams Booked
- 15 Hines
- 29 McMahon
- 17 Robson
- 38 Haroun
- 07 McDonald
- 09 Emnes
- 30 Jutkiew'z
- 31 Ripley
- 03 Bennett
- 22 Martin
- 24 Park
- 33 Smallwood
- 20 Williams
- 25 Main
Live Text Commentary
Full Time The referee brings the game to a close.90:00 +1:53
Effort from the edge of the area by James McClean goes wide of the left-hand upright.89:41
The official flags Stephane Sessegnon offside. Indirect free kick taken by Connor Ripley.88:13
Faris Haroun is ruled offside. Simon Mignolet takes the indirect free kick.86:56
James McClean challenges Tony McMahon unfairly and gives away a free kick. Free kick taken by Tony McMahon.86:00
Headed effort from deep inside the penalty area by Lukas Jutkiewicz misses to the left of the goal.84:49
Inswinging corner taken right-footed by Sebastian Larsson from the left by-line, clearance by Matthew Bates.84:39
The ball is delivered by James McClean, Matthew Bates manages to make a clearance.82:43
Fraizer Campbell gives away a free kick for an unfair challenge on Matthew Bates. Connor Ripley restarts play with the free kick.82:00
Scott McDonald challenges Phillip Bardsley unfairly and gives away a free kick. Free kick taken by John O'Shea.80:22
James McClean takes a shot. Blocked by Rhys Williams.79:57
Inswinging corner taken right-footed by Tony McMahon from the left by-line, John O'Shea manages to make a clearance.79:28 Substitution
Substitution (Sunderland) makes a substitution, with Jack Colback coming on for David Vaughan.79:07 Substitution
Substitution Connor Ripley joins the action as a substitute, replacing Danny Coyne.77:59
Tony McMahon concedes a free kick for a foul on James McClean. Kieran Richardson takes the free kick.77:01
Faris Haroun concedes a free kick for a foul on John O'Shea. Direct free kick taken by Kieran Richardson.76:18
Rhys Williams gives away a free kick for an unfair challenge on Simon Mignolet. Simon Mignolet takes the direct free kick.75:24
Corner taken by Tony McMahon from the left by-line, Craig Gardner manages to make a clearance.72:53
Lukas Jutkiewicz gives away a free kick for an unfair challenge on Craig Gardner. John O'Shea takes the direct free kick.71:27
Header on goal by Fraizer Campbell from inside the box goes harmlessly over the target.
Kieran Richardson takes the direct free kick.69:21 Booking
Booking The referee cautions Rhys Williams for unsporting behaviour.69:16
Unfair challenge on David Vaughan by Rhys Williams results in a free kick.67:51
Effort on goal by Stephane Sessegnon from just inside the penalty box goes harmlessly over the target.67:10
Corner taken right-footed by Sebastian Larsson from the left by-line, save by Danny Coyne.66:12
David Vaughan takes a shot. Save by Danny Coyne.65:41
Barry Robson gives away a free kick for an unfair challenge on Stephane Sessegnon. Sebastian Larsson takes the direct free kick.64:16
Corner from the left by-line taken by Tony McMahon, Shot on goal by Marvin Emnes from just inside the area goes over the target.64:02
Inswinging corner taken by Tony McMahon from the left by-line, clearance by Phillip Bardsley.63:39
Rhys Williams takes a shot. Blocked by Michael Turner.62:30
Sebastian Larsson concedes a free kick for a foul on Scott McDonald. Direct free kick taken by Justin Hoyte.61:00
Corner taken by Sebastian Larsson, clearance by Rhys Williams.60:01
Craig Gardner gives away a free kick for an unfair challenge on Tony McMahon. Faris Haroun takes the free kick.59:14 Substitution
Substitution Michael Turner replaces Wes Brown.58:21
The assist for the goal came from James McClean.58:21 Goal scored
Goal! - Fraizer Campbell - Sunderland 1 - 1 Middlesbro Fraizer Campbell gets on the score sheet with a goal from just inside the penalty area to the bottom left corner of the goal. Sunderland 1-1 Middlesbrough.57:15
Barry Robson decides to take a short corner.51:34
Tony McMahon concedes a free kick for a foul on David Vaughan. Sebastian Larsson crosses the ball from the free kick right-footed from left wing, clearance by Rhys Williams.49:43
Craig Gardner challenges Faris Haroun unfairly and gives away a free kick. Direct strike on goal from the free kick comes in from Barry Robson.49:07
Shot by Marvin Emnes from deep inside the penalty area misses to the left of the goal.48:47
Inswinging corner taken from the left by-line by Tony McMahon.46:45
Handball decision goes against Barry Robson. Strike on goal comes in from James McClean from the free kick.45:45
Free kick awarded for a foul by David Vaughan on Scott McDonald. Direct free kick taken by Matthew Bates.45:18
Corner taken by Sebastian Larsson, Danny Coyne makes a save.45:01
The referee gets the second half underway.45:01 Substitution
Substitution Fraizer Campbell on for Connor Wickham.45:00 +2:42 Half time
Half Time The whistle is blown to end the first half.45:00 +2:09
Rhys Williams concedes a free kick for a foul on Stephane Sessegnon. Free kick taken by Kieran Richardson.45:00 +1:39
Free kick awarded for an unfair challenge on Kieran Richardson by Lukas Jutkiewicz. Free kick taken by Kieran Richardson.44:45
Lukas Jutkiewicz produces a right-footed shot from deep inside the six-yard box which goes wide of the right-hand upright.44:40 Booking
Booking Booking for Kieran Richardson.44:30
Lukas Jutkiewicz takes a shot. Save made by Simon Mignolet.43:46
Direct free kick taken by John O'Shea.43:46 Booking
Booking Justin Hoyte receives a caution for unsporting behaviour.43:32
Unfair challenge on Stephane Sessegnon by Justin Hoyte results in a free kick.42:50
Kieran Richardson gives away a free kick for an unfair challenge on Faris Haroun. Free kick taken by Tony McMahon.40:27
Danny Coyne fouled by Connor Wickham, the ref awards a free kick. Danny Coyne restarts play with the free kick.39:50
The offside flag is raised against Connor Wickham. Danny Coyne restarts play with the free kick.37:01
The ball is delivered by Connor Wickham.33:33
Seb Hines gives away a free kick for an unfair challenge on Connor Wickham. Sebastian Larsson sends in a cross, Connor Wickham produces a header from inside the area that goes over the bar.33:14
Stephane Sessegnon fouled by Marvin Emnes, the ref awards a free kick. Wes Brown takes the direct free kick.28:50
Free kick awarded for a foul by Lukas Jutkiewicz on Wes Brown. Direct free kick taken by Simon Mignolet.28:11
Free kick awarded for an unfair challenge on Scott McDonald by Phillip Bardsley. Free kick taken by Danny Coyne.27:32
Sebastian Larsson takes a inswinging corner from the left by-line played to the near post.24:37
Inswinging corner taken by Sebastian Larsson from the left by-line played to the near post, clearance by Faris Haroun.22:48
The ball is delivered by David Vaughan, James McClean takes a shot. Save by Danny Coyne.22:24
James McClean takes a shot. Save made by Danny Coyne.20:30
Effort from just outside the area by Craig Gardner goes over the bar.19:54
Stephane Sessegnon fouled by Rhys Williams, the ref awards a free kick. Direct free kick taken by Simon Mignolet.19:00
The official flags Marvin Emnes offside. Simon Mignolet takes the indirect free kick.18:33
Rhys Williams takes a shot.16:19
Marvin Emnes has an effort at goal from outside the penalty box missing to the wide right of the goal.15:12 Goal scored
Goal! - Barry Robson - Sunderland 0 - 1 Middlesbro Barry Robson scores a goal from just inside the area to the bottom right corner of the goal. Sunderland 0-1 Middlesbrough.13:38
Barry Robson challenges Stephane Sessegnon unfairly and gives away a free kick. Strike comes in from David Vaughan from the free kick.12:08
Inswinging corner taken left-footed by David Vaughan from the right by-line to the near post, Seb Hines makes a clearance.9:40
Stephane Sessegnon produces a cross, Headed effort from inside the area by Sebastian Larsson misses to the right of the goal.5:57
The assistant referee flags for offside against Stephane Sessegnon. Free kick taken by Seb Hines.3:20
Handball by Rhys Williams. Direct free kick taken by Phillip Bardsley.2:33
Scott McDonald takes a shot. Save made by Simon Mignolet.0:00
The game begins.
Live data and text provided by our data suppliers