Celtic ensured the Scottish title race will go to the final day with a win over Hearts overshadowed by an attack by a fan on visiting boss Neil Lennon.
Gary Hooper had just slotted in his second goal of the night when a man emerged from the Tynecastle stand to aim a punch at Lennon.
Hooper struck after 12 minutes before David Obua was sent off and added his second four minutes after the break.
Kris Commons was sent off after celebrating a fine 78th-minute finish.
And the win means Celtic are a point behind leaders and holders Rangers ahead of Sunday's final round of games.
Attack on Lennon is a disgrace - Mjallby
Celtic had gone into what was always going to be a potentially fiery encounter knowing that a defeat would hand the title to their Glasgow rivals.
Lennon sprang a surprise in central defence, restoring Glenn Loovens in place of Thomas Rogne, with Charlie Mulgrew moving up into midfield in place of James Forrest as the Celtic manager perhaps anticipated a bit of a battle.
The pre-match build-up had been given added spice by hints from Lennon that teams, including Hearts, had been less than competitive against title rivals Rangers in recent weeks.
Although Lennon denied he had suggested that Hearts had not been trying, it was predicted that the remarks would provide extra motivation for Jim Jefferies, his side and their fans.
Obua (right) was sent off for lashing out at Mulgrew
However, with Dundee United's defeat by Rangers ensuring that Hearts will finish third, three points meant less for the Tynecastle men and it was Celtic who were first to every ball from kick off.
Daniel Majstorovic, Hooper and Georgios Samaras, who had started ahead of Daryl Murphy up front, all threatened as the ball bounced dangerously around the home penalty box.
Hearts captain Marius Zaliukas was back in central defence, along with Ismael Bouzid, after being left out against Rangers following instructions from Hearts majority shareholder Vladimir Romanov.
The return of their first-choice central defensive pairing should have strengthened the home side, but it was a mistake by the Lithuanian international that handed Celtic the lead.
Zaliukas was dispossessed by Kris Commons as he looked to spray the ball upfield and the Scotland winger fed it perfectly into the path of Hooper for a simple, low finish past Marian Kello.
The inclusion of the goalkeeper, who had also been left out recently for mysterious "personal reasons", and striker Stephen Elliot had Hearts close to full strength.
Celtic, though, were making them look like a side that had not won a league match since 19 February and Commons twice in quick succession came close to extending the lead.
Jefferies condemns attack on Lennon
The winger's 18-yard drive was pushed superbly on to a post by Kello and, when the ball was turned back into the six-yard box by Mark Wilson, it deflected off the former Derby man's shin and flew a foot wide of the unguarded net.
Ian Black had been lucky to escape a red card for an earlier two-footed challenge on Samaras, but team-mate Obua could perhaps count himself unfortunate to be given his marching orders.
Mulgrew had stuck his elbow forceably into the Uganda utility man's chest and, although the Hearts player barely brushed his opponents' hairline with a flailing arm, the assistant referee ruled that he had lifted his hand in retaliation.
Celtic virtually ended the game as a contest in the opening minutes of the second half.
Ki Sung-Yeung wriggled his way to the edge of the box and set up Hooper for a clinical, low finish with the outside of his foot.
As the Celtic fans celebrated, one man advanced from the stands and appeared to aim a punch at Lennon before being hauled away by security.
The Celtic manager looked stunned before a smile eventually returned to his face as Commons fired a powerful 25-yard drive just wide.
Commons had another drive beaten away by Kello before Bouzid provided Hearts' first threat with a backward header that looped just wide after 62 minutes.
The match finished in further controversy when Commons found the net with a long-range effort before being sent off after picking up a second yellow card for rushing into the crowd to celebrate.
Live text and stats
Wednesday, 11 May 2011
13 Obua red card
17 McGowan yellow card
21 Ismael Bouzid
24 Thomson yellow card
08 Black yellow card
16 Stevenson (Barr 77)
19 Skacel (Glen 77)
10 Elliott (Driver 64)
03 Izaguirre (Maloney 77)
12 Wilson (Cha Du-Ri 84)
18 Ki Sung-Yeung yellow card
09 Samaras (Murphy 85)
15 Commons two yellow cards, red card
11 Cha Du-Ri ,
Ref: Craig ThomsonAtt: 16,681
Attempts on target
Attempts off target
90:00+2:07 The referee signals the end of the game.
89:17 Ryan McGowan is flagged offside by the assistant referee. Fraser Forster takes the indirect free kick.
88:21 The referee blows for offside. Free kick taken by Marius Zaliukas.
87:22 Unfair challenge on Daniel Majstorovic by Gary Glen results in a free kick. Daniel Majstorovic takes the direct free kick.
86:56 Free kick awarded for an unfair challenge on Daniel Majstorovic by Eggert Jonsson. Direct free kick taken by Fraser Forster.
85:23 The ball is swung over by Du-Ri Cha.
84:14 Substitution (Celtic) makes a substitution, with Daryl Murphy coming on for Georgios Samaras.
83:48 Ian Black challenges Gary Hooper unfairly and gives away a free kick. Scott Brown takes the direct free kick.
83:09 Substitution Mark Wilson goes off and Du-Ri Cha comes on.
80:24 Free kick awarded for a foul by Craig Thomson on Gary Hooper. Free kick taken by Mark Wilson.
77:57 Sent off Kris Commons sent from the field by the ref for second bookable offence.
77:46 GOAL - Kris Commons:Hearts 0 - 3 Celtic A goal is scored by Kris Commons from close in to the bottom left corner of the goal. Hearts 0-3 Celtic.
75:51 Marian Kello takes the free kick.
75:51 Substitution Shaun Maloney comes on in place of Emilio Izaguirre.
75:51 Substitution Darren Barr joins the action as a substitute, replacing Ryan Stevenson.
75:51 Substitution Rudi Skacel goes off and Gary Glen comes on.
75:51 Booking Kris Commons booked for unsporting behaviour.
74:57 Gary Hooper takes a shot. Save by Marian Kello.
70:52 Free kick crossed left-footed by Charlie Mulgrew from left channel, Marius Zaliukas manages to make a clearance.
70:52 Booking Ryan McGowan is booked.
70:43 Foul by Ryan McGowan on Emilio Izaguirre, free kick awarded.
69:14 Free kick awarded for a foul by Ryan McGowan on Emilio Izaguirre. Charlie Mulgrew restarts play with the free kick.
68:05 Emilio Izaguirre produces a cross.
67:18 Ismael Bouzid concedes a free kick for a foul on Gary Hooper. Direct free kick taken by Daniel Majstorovic.
64:50 Shot by Kris Commons. Blocked by Scott Brown.
63:58 Substitution Andrew Driver on for Stephen Elliott.
62:17 Stephen Elliott produces a right-footed shot from just outside the penalty box that goes wide left of the target.
61:02 Glenn Loovens challenges Ryan Stevenson unfairly and gives away a free kick. Free kick crossed right-footed by Ian Black,
clearance made by Daniel Majstorovic. Corner from the right by-line taken by Rudi Skacel, Charlie Mulgrew manages to make
59:10 Foul by Eggert Jonsson on Emilio Izaguirre, free kick awarded. Direct free kick taken by Charlie Mulgrew. Kris Commons takes
a shot. Save by Marian Kello.
58:11 Stephen Elliott has an effort at goal from deep inside the area missing to the right of the target.
54:08 Kris Commons produces a left-footed shot from long distance which goes wide right of the goal.
53:41 Sung-Yeung Ki fouled by Ian Black, the ref awards a free kick. Direct free kick taken by Sung-Yeung Ki.
52:47 Unfair challenge on Ryan Stevenson by Daniel Majstorovic results in a free kick. Ian Black delivers the ball from the free
kick right-footed from right wing, Glenn Loovens manages to make a clearance. Corner from the left by-line taken by Craig
Thomson, clearance made by Glenn Loovens.
52:12 The ball is sent over by Georgios Samaras.
48:36 The assist for the goal came from Sung-Yeung Ki.
48:36 GOAL - Gary Hooper:Hearts 0 - 2 Celtic Gary Hooper finds the back of the net with a goal from inside the penalty box to the bottom right corner of the goal. Hearts
47:15 Ismael Bouzid takes the direct free kick.
47:15 Booking Sung-Yeung Ki goes into the book.
47:08 Free kick awarded for a foul by Sung-Yeung Ki on Ian Black.
46:15 Free kick awarded for an unfair challenge on Ryan Stevenson by Daniel Majstorovic. Shot comes in from Rudi Skacel from the
free kick, save by Fraser Forster.
45:30 Ryan Stevenson fouled by Emilio Izaguirre, the ref awards a free kick. Free kick crossed right-footed by Craig Thomson, save
made by Fraser Forster.
45:01 The referee starts the second half.
45:00+0:06 The ref blows to signal half-time.
44:16 Unfair challenge on Mark Wilson by Ryan Stevenson results in a free kick. Free kick taken by Glenn Loovens.
40:31 Daniel Majstorovic restarts play with the free kick.
40:31 Booking Craig Thomson is cautioned.
40:16 Craig Thomson gives away a free kick for an unfair challenge on Gary Hooper.
38:12 Unfair challenge on Marius Zaliukas by Georgios Samaras results in a free kick. Craig Thomson takes the free kick.
36:36 Craig Thomson gives away a free kick for an unfair challenge on Kris Commons. The ball is swung over by Charlie Mulgrew, Daniel
Majstorovic takes a shot. Marius Zaliukas gets a block in. Outswinging corner taken from the right by-line by Sung-Yeung Ki,
save by Marian Kello.
35:54 The assistant referee signals for offside against Ryan Stevenson. Daniel Majstorovic takes the indirect free kick.
34:39 Foul by Marius Zaliukas on Gary Hooper, free kick awarded. Scott Brown takes the free kick.
31:42 Sent off David Obua is sent off by the referee for violent conduct.
28:55 Ian Black fouled by Georgios Samaras, the ref awards a free kick. Ismael Bouzid restarts play with the free kick.
26:53 Unfair challenge on Ian Black by Scott Brown results in a free kick. Free kick crossed by Craig Thomson.
25:15 Inswinging corner taken right-footed by Craig Thomson from the right by-line, Ryan Stevenson takes a shot. Blocked by Emilio
25:00 Unfair challenge on David Obua by Charlie Mulgrew results in a free kick. Ian Black takes the direct free kick.
24:05 Kris Commons takes a shot. Save by Marian Kello. Close range effort by Kris Commons goes wide of the left-hand upright.
Correction - 21:59 Ian Black challenges Gary Hooper unfairly and gives away a free kick. Kris Commons delivers the ball from the free kick left-footed
from left wing.
21:59 Gary Hooper fouled by Ian Black, the ref awards a free kick. Kris Commons restarts play with the free kick.
20:41 Georgios Samaras concedes a free kick for a foul on Ian Black. Marian Kello restarts play with the free kick.
20:06 Daniel Majstorovic restarts play with the free kick.
20:06 Booking Ian Black is booked.
19:57 Ian Black gives away a free kick for an unfair challenge on Georgios Samaras.
19:24 Foul by Ryan McGowan on Scott Brown, free kick awarded. Scott Brown takes the direct free kick.
18:55 Unfair challenge on Sung-Yeung Ki by Ian Black results in a free kick. Free kick taken by Daniel Majstorovic.
15:23 Ian Black fouled by Kris Commons, the ref awards a free kick. Direct free kick taken by Marius Zaliukas.
13:56 Handball decision goes against Gary Hooper. Direct free kick taken by Ismael Bouzid.
12:16 The ball is delivered by Georgios Samaras, blocked by Marius Zaliukas. Corner taken by Sung-Yeung Ki from the right by-line,
clearance by David Obua. Corner taken by Kris Commons from the left by-line, Daniel Majstorovic has a headed effort from close
in and clears the bar.
11:21 The assist for the goal came from Kris Commons.
11:21 GOAL - Gary Hooper:Hearts 0 - 1 Celtic Goal scored by Gary Hooper from inside the box to the bottom right corner of the goal. Hearts 0-1 Celtic.
10:10 Kris Commons has an effort at goal from outside the penalty box which goes wide left of the goal.
7:50 Unfair challenge on David Obua by Scott Brown results in a free kick. Marius Zaliukas takes the direct free kick.
7:07 Gary Hooper challenges Marius Zaliukas unfairly and gives away a free kick. Ismael Bouzid restarts play with the free kick.
4:59 Unfair challenge on Scott Brown by Craig Thomson results in a free kick. Sung-Yeung Ki takes the free kick.
4:43 Georgios Samaras takes a shot. Marius Zaliukas gets a block in.
2:11 Corner taken by Sung-Yeung Ki from the right by-line, clearance by Ismael Bouzid. Corner from the right by-line taken by Sung-Yeung
Ki, Ismael Bouzid makes a clearance.
1:52 Unfair challenge on Emilio Izaguirre by Ryan McGowan results in a free kick. Direct free kick taken by Sung-Yeung Ki.
0:27 Sung-Yeung Ki concedes a free kick for a foul on Ryan McGowan. Direct free kick taken by Marius Zaliukas.
0:00 The referee starts the match.
Live text and data provided by The Press Association.
This page is best viewed in an up-to-date web browser with style sheets (CSS) enabled. While you will be able to view the content of this page in your current browser, you will not be able to get the full visual experience. Please consider upgrading your browser software or enabling style sheets (CSS) if you are able to do so.