Craig Beattie's stoppage-time penalty for Hearts knocked out holders Celtic to set up a first Edinburgh derby Scottish Cup final since 1896.

The former Celtic striker was handed the chance when Marius Zaliukas' shot came off Joe Ledley's hand.

Rudi Skacel had fired Hearts into the lead two minutes after the break.

Gary Hooper looked offside as he headed the equaliser with three minutes left, but Beattie's spot kick ended Celtic's hopes of a league and Cup double.

It sparked fury on the Celtic bench, with manager Neil Lennon racing on to the pitch to confront referee Euan Norris about the penalty award, as Hearts celebrated reaching the final against Hibernian on 19 May.

Both sides had gone into the game seeking their third straight win, but Lennon was forced to rule out Adam Matthews with a mouth infection, meaning a rare start for Sweden right-back Mikael Lustig.

Stephen Elliott was given the nod up front for Hearts - with Beattie only regarded fit enough for the bench and Gary Glen dropping out of the squad completely - and was given given an early chance to prove his sharpness.

Skacel rounds Forster to open the scoring for Hearts

Skacel rounds Forster to open the scoring for Hearts

He intercepted a poor back pass from Kelvin Wilson but had his shot blocked by goalkeeper Fraser Forster at point-blank range.

Celtic started to pick their passes and a Kris Commons free-kick found Lustig, who ought to have done better than head over from eight yards, while Ian Black was perhaps fortunate to pick up only a yellow card with a high and late challenge on Ledley.

Hooper, who appeared to be given a deeper role than normal, glanced a header across the face of goal following a fine curling Charlie Mulgrew cross as Celtic started to take control.

Commons was handed a great chance to score when Webster was short with a back-pass, but the Scotland winger miscontrolled his attempt to round goalkeeper Jamie MacDonald.

Somehow the Edinburgh side survived unscathed until the break after a pinpoint cross from Georgios Samaras found the diving head of Ki Sung-Yeung, but the ball rebounded off the inside of the post and clear.

Hearts manager Paulo Sergio made a change at the break, with Scott Robinson being replaced with Beattie, who made an impact within 70 seconds.

The former West Brom and Swansea striker's pass deflected off Wilson into the path of Skacel, who rounded Forster and fired into the roof of the net.

Ki went close to an equaliser with a blistering drive from 16 yards that just evaded the crossbar.

Skacel then forced a full-stretch diving save from Forster with a powerful effort from 20 yards and fired another effort just wide.

Celtic were looking more dangerous with Anthony Stokes on for Samaras and the substitute's low drive tested MacDonald.

Ki had another great chance with a header but found the outside of the post from five yards after being found unmarked by Commons, whose next free-kick was clawed away by MacDonald.

The goalkeeper saved superbly following a Mulgrew header and Stokes could only aim the rebound across the face of goal from two yards.

However, the pressure finally told when Mulgrew's cross found Hooper, who headed home from 10 yards when the striker had a yard start behind the defence.

It was Celtic's turn to feel aggrieved moments later when Zaliukas' shot deflected off the arm of Ledley, then brushed Victor Wanyama's hand and Beattie drove the penalty down the centre and into the net.

Ledley almost made amends with a back-post volley that MacDonald managed to hold and send Hearts into the final despite Celtic's late claim that of a hand ball against Webster.

Lineup, Bookings (4) & Substitutions (6)

Celtic

  • 01 Forster
  • 06 Wilson Booked
  • 21 Mulgrew Booked
  • 22 Loovens
  • 23 Lustig (Wanyama - 74' )
  • 08 Brown (McGeouch - 82' )
  • 16 Ledley
  • 18 Ki Sung-Yeung
  • 09 Samaras (Stokes - 60' )
  • 15 Commons
  • 88 Hooper

Substitutes

  • 24 Zaluska
  • 03 Izaguirre
  • 46 McGeouch
  • 67 Wanyama
  • 10 Stokes

Hearts

  • 30 MacDonald
  • 03 Grainger
  • 05 Barr
  • 06 Webster
  • 17 McGowan
  • 26 Zaliukas
  • 08 Black Booked (Santana - 65' )
  • 11 Driver
  • 19 Skacel
  • 10 Elliott (Prychynenko - 78' )
  • 27 Robinson (Beattie - 46' Booked )

Substitutes

  • 28 Ridgers
  • 07 Santana
  • 12 Templeton
  • 35 Prychynenko
  • 04 Beattie
Ref: Norris
Att: 36,609

Match Stats

Shots

15 8

On target

7 4

Corners

9 7

Fouls

8 12

Live Text Commentary

90:00 +4:31 Full time

Full Time The referee ends the match.

90:00 +4:14

Dylan McGeough sends in a cross, save by Jamie MacDonald.

90:00 +4:00

Charlie Mulgrew sends in a cross, Andy Webster manages to make a clearance.

90:00 +2:31

Joe Ledley takes a shot. Save by Jamie MacDonald.

90:00 +1:38 Booking

Booking Craig Beattie is cautioned by the ref for unsporting behaviour.

90:00 +1:20 Goal scored

Goal! - Craig Beattie - Celtic 1 - 2 Hearts Power penalty scored by Craig Beattie. Celtic 1-2 Hearts.

90:00 +0:23

Handball decision goes against Joe Ledley.

90:00 +0:13

Marius Zaliukas takes a shot. Blocked by Joe Ledley.

89:18

Corner taken left-footed by Daniel Grainger.

89:12

Daniel Grainger crosses the ball, Victor Wanyama gets a block in.

88:07

Sung-Yeung Ki delivers the ball.

86:56

Free kick awarded for an unfair challenge on Craig Beattie by Kelvin Wilson. Denis Prychynenko produces a shot on goal direct from the free kick.

86:04

Charlie Mulgrew provided the assist for the goal.

86:04 Goal scored

Goal! - Gary Hooper - Celtic 1 - 1 Hearts Gary Hooper grabs a headed goal from inside the six-yard box. Celtic 1-1 Hearts.

86:01

Charlie Mulgrew sends in a cross,

84:01

Inswinging corner taken from the right by-line by Kris Commons, Charlie Mulgrew takes a shot. Jamie MacDonald makes a fantastic save.

83:38

Corner taken by Kris Commons from the right by-line to the near post, Craig Beattie manages to make a clearance.

82:31

Andrew Driver gives away a free kick for an unfair challenge on Victor Wanyama. Strike comes in from Kris Commons from the free kick, save by Jamie MacDonald.

82:21

A cross is delivered by Dylan McGeough, clearance made by Andy Webster.

81:45 Substitution

Substitution Dylan McGeough on for Scott Brown.

80:32

Free kick awarded for an unfair challenge on Victor Wanyama by Daniel Grainger. A cross is delivered by Kris Commons, Header from close range by Sung-Yeung Ki hits the post.

80:15

Centre by Andrew Driver, save by Fraser Forster.

79:01

Free kick crossed left-footed by Daniel Grainger from right channel, clearance by Charlie Mulgrew.

79:01 Booking

Booking The referee shows Kelvin Wilson a yellow card for unsporting behaviour.

78:51

Free kick awarded for a foul by Kelvin Wilson on Rudi Skacel.

78:44

A cross is delivered by Scott Brown, Andy Webster makes a clearance.

78:25

Craig Beattie challenges Victor Wanyama unfairly and gives away a free kick. Free kick taken by Victor Wanyama.

77:44 Substitution

Substitution Stephen Elliott leaves the field to be replaced by Denis Prychynenko.

77:25

The ball is swung over by Kris Commons. Charlie Mulgrew produces a right-footed shot from just outside the area that goes wide left of the goal.

73:44

Jamie MacDonald takes the indirect free kick.

73:44 Substitution

Substitution Victor Wanyama is brought on as a substitute for Mikael Lustig.

73:44

The referee blows for offside.

73:19

Craig Beattie produces a cross. Stephen Elliott crosses the ball, save made by Fraser Forster.

71:00

The referee blows for offside against Stephen Elliott. Indirect free kick taken by Mikael Lustig.

70:43

Shot by Anthony Stokes from 18 yards. Jamie MacDonald makes a save.

70:28

Centre by Anthony Stokes, Ryan McGowan gets a block in.

69:33

The ball is sent over by Andrew Driver, Kelvin Wilson manages to make a clearance.

69:03

Header from deep inside the area by Anthony Stokes goes harmlessly over the crossbar.

68:20

Mikael Lustig delivers the ball, Ryan McGowan manages to make a clearance.

67:02

Craig Beattie fouled by Glenn Loovens, the ref awards a free kick. Daniel Grainger takes the direct free kick.

66:05

Outswinging corner taken from the left by-line by Kris Commons, clearance by Marius Zaliukas.

65:57

Anthony Stokes takes a shot. Blocked by Daniel Grainger.

65:04

Ryan McGowan challenges Charlie Mulgrew unfairly and gives away a free kick. Free kick taken by Charlie Mulgrew.

64:08 Substitution

Substitution Ian Black leaves the field to be replaced by Suso Santana.

63:41

Craig Beattie produces a right-footed shot from just outside the penalty box that misses to the left of the target.

61:15

Corner from the left by-line taken by Daniel Grainger, clearance made by Mikael Lustig.

60:54

Free kick awarded for an unfair challenge on Kelvin Wilson by Stephen Elliott. Fraser Forster takes the direct free kick.

59:39 Substitution

Substitution Georgios Samaras goes off and Anthony Stokes comes on.

56:56

Shot from just outside the box by Rudi Skacel misses to the left of the target.

54:37

Daniel Grainger takes the outswinging corner, Andy Webster challenges Mikael Lustig unfairly and gives away a free kick. Fraser Forster takes the free kick.

54:26

Rudi Skacel takes the chance to get an effort at goal. Save by Fraser Forster.

53:59

Free kick awarded for an unfair challenge on Rudi Skacel by Scott Brown. Free kick taken by Ian Black.

52:55

Georgios Samaras concedes a free kick for a foul on Ryan McGowan. Jamie MacDonald takes the direct free kick.

52:43

A cross is delivered by Charlie Mulgrew, clearance by Andy Webster.

51:56

The referee blows for offside against Rudi Skacel. Free kick taken by Kelvin Wilson.

51:16

Inswinging corner taken by Kris Commons, save by Jamie MacDonald.

51:12

Gary Hooper sends in a cross, clearance by Marius Zaliukas.

48:31

Sung-Yeung Ki takes a shot from just inside the penalty box which clears the bar.

48:11

Corner taken by Kris Commons from the right by-line to the near post, Craig Beattie makes a clearance.

47:57

Free kick awarded for a foul by Ian Black on Georgios Samaras. Free kick taken by Charlie Mulgrew.

46:12

Craig Beattie provided the assist for the goal.

46:12 Goal scored

Goal! - Rudi Skacel - Celtic 0 - 1 Hearts Rudi Skacel scores a goal from close in to the top left corner of the goal. Celtic 0-1 Hearts.

45:52

Centre by Charlie Mulgrew, Ryan McGowan makes a clearance.

45:01

The second half kicks off.

45:01 Substitution

Substitution Craig Beattie is brought on as a substitute for Scott Robinson.

45:00 +1:06 Half time

Half Time The ref blows to end the first period.

45:00 +0:19

Mikael Lustig produces a cross, clearance made by Ryan McGowan.

45:00 +0:01

The ball is swung over by Mikael Lustig, Marius Zaliukas makes a clearance.

44:32

The ball is delivered by Kris Commons. The ball is sent over by Mikael Lustig, Header from close range by Sung-Yeung Ki hits the post.

41:22

Mikael Lustig delivers the ball, clearance made by Andy Webster.

40:17

Centre by Mikael Lustig. Kris Commons has a drilled shot. Comfortable save by Jamie MacDonald.

38:23

Handball decision goes against Ian Black. Charlie Mulgrew restarts play with the free kick.

35:21

The ball is swung over by Mikael Lustig, Header by Kris Commons from deep inside the penalty area misses to the left of the target.

33:51

Centre by Georgios Samaras, clearance by Marius Zaliukas.

32:40

Outswinging corner taken left-footed by Kris Commons from the left by-line to the near post. Centre by Joe Ledley, clearance by Ian Black.

32:32

The ball is swung over by Mikael Lustig, clearance made by Ryan McGowan.

30:29

A cross is delivered by Georgios Samaras.

29:00

Mikael Lustig sends in a cross.

28:12

Foul by Andrew Driver on Kris Commons, free kick awarded. Kris Commons delivers the ball from the free kick left-footed from right wing.

27:24

Corner taken left-footed by Kris Commons from the right by-line, save by Jamie MacDonald.

25:58

Unfair challenge on Rudi Skacel by Scott Brown results in a free kick. Free kick taken by Andy Webster.

25:07

The ball is delivered by Charlie Mulgrew, Gary Hooper produces a header from deep inside the six-yard box which goes wide of the right-hand post.

22:46

Corner taken by Daniel Grainger, Header from deep inside the penalty area by Andy Webster goes harmlessly over the crossbar.

21:40

Direct free kick taken by Andy Webster.

21:40 Booking

Booking Ian Black booked.

21:03 Booking

Booking Charlie Mulgrew is shown a yellow card for unsporting behaviour.

20:43

Foul by Charlie Mulgrew on Scott Robinson, free kick awarded.

19:14

Georgios Samaras fouled by Scott Robinson, the ref awards a free kick. Joe Ledley takes the direct free kick.

17:43

Darren Barr challenges Kris Commons unfairly and gives away a free kick. Direct free kick taken by Kris Commons.

17:04

Centre by Charlie Mulgrew.

13:34

Free kick awarded for an unfair challenge on Mikael Lustig by Andrew Driver. Kris Commons delivers the ball, Mikael Lustig has a headed effort from close in and clears the bar.

13:07

Mikael Lustig produces a cross, Marius Zaliukas makes a clearance.

12:22

The ball is crossed by Ian Black.

12:10

The ball is crossed by Andrew Driver, clearance made by Charlie Mulgrew.

10:03

Free kick awarded for an unfair challenge on Joe Ledley by Scott Robinson. Joe Ledley restarts play with the free kick.

9:16

Centre by Ian Black.

9:06

Centre by Ian Black, clearance by Glenn Loovens.

8:25

Stephen Elliott fouled by Charlie Mulgrew, the ref awards a free kick. Ian Black delivers the ball from the free kick right-footed from right wing, Fraser Forster makes a save.

7:16

A cross is delivered by Charlie Mulgrew, clearance by Ryan McGowan.

6:29

Kris Commons delivers the ball.

5:31

A cross is delivered by Andrew Driver, Georgios Samaras manages to make a clearance.

5:08

Outswinging corner taken by Ian Black from the right by-line, clearance by Charlie Mulgrew.

3:18

Corner taken by Sung-Yeung Ki played to the near post, clearance by Darren Barr.

3:10

The ball is crossed by Sung-Yeung Ki, blocked by Daniel Grainger.

2:29

The ball is delivered by Kris Commons.

2:03

Corner taken by Kris Commons, Marius Zaliukas makes a clearance.

1:58

The ball is swung over by Kris Commons, blocked by Daniel Grainger.

0:51

Inswinging corner taken by Daniel Grainger, clearance made by Glenn Loovens.

0:31

Corner taken by Daniel Grainger from the right by-line, clearance made by Glenn Loovens.

0:18

Stephen Elliott takes a shot. Save by Fraser Forster.

0:00

The referee gets the game underway.

Live data and text provided by our data suppliers