Hearts were left fuming by the first two goals as Celtic ended Saturday still ahead of Rangers at the top of the Scottish Premier League.
Suso had sent a drive against a Celtic post, but Hearts were caught out as Daryl Murphy broke clear and his cross was turned in by James Forrest.
The visitors thought Shaun Maloney was also offside before he rounded goalkeeper Marian Kello to score.
Paddy McCourt settled it with a mazy run and finish late in the second half.
Neil Lennon's 12th consecutive league win as Celtic manager - the fourth of this season - kept his side ahead of Rangers on goal difference after the champions' win over Hamilton Accies earlier in the day.
And, despite the controversy, it was a deserved win that ended Hearts' unbeaten league record this season.
Anthony Stokes had made his Celtic debut after arriving from Hibernian, replacing Georgios Samaras beside Murphy up front.
McCourt rounded off the game with a fine individual goal
And the Irishman was first to threaten a goal, finishing off a flowing move by driving just wide of the post.
Celtic, perhaps buoyed by the enthusiastic minute's applause to commemorate the 25th anniversary of the death of legendary Celtic manager Jock Stein, had made an energetic start.
Kevin Kyle should have scored with an 18th-minute header for Hearts when he was left unmarked at a corner, but goalkeeper Fraser Forster saved well at the back post.
Forster then had to tip a Ryan Stevenson cross-cum-shot over the crossbar as the visitors took heart.
Suso sent a 20-yard drive off the outside of the upright, but Celtic immediately broke upfield and took the lead as they breached a defence in which midfielder Ruben Palazuelos was deputising at left-back for the injured Lee Wallace.
Daryl Murphy picked the ball up wide on the right and, with Hearts claiming for offside, Darren Barr's attempt to clear the Irishman's ball across the face of goal struck Forrest and crossed the line.
The strength of Jim Jefferies' protests led to the Hearts manager being sent to the stand.
Without his growled instructions from the touchline, the Edinburgh side appeared to lose their way as they played a kamikaze offside trap.
Forrest had already broken clear only to miss the waiting Maloney with his cross when the latter was found by a Stokes through ball before skipping past Kello.
Hearts again thought the flag should have gone up against the Scotland forward and their disappointment would have heightened had Kello not blocked a 15-yard Stokes drive with his legs.
The visitors had not learned their lesson as Celtic created the first chance of the second half, Murphy breaking clear only for Kello to save at the striker's feet.
Maloney ought to have put the game beyond Hearts but dallied on the ball five yards out before being swamped by the visitors' defence.
Hearts had claims for a penalty rejected when David Templeton was challenged on the edge of the box by Emilio Izaguirre and Suso immediately forced Forster to push clear following the winger's powerful 16-yard drive.
From his position in the stand, Jefferies sent four men forward, but his side were caught out at the back again and Samaras was ruled offside after breaking clear before rolling the ball into the net and the Greece forward was then denied by a good Kello save.
McCourt finished the game with a flourish, the substitute picking the ball up wide on the left and beating three players before dinking it over Kello.
Live text and stats
Saturday, 11 September 2010
11 Cha Du-Ri
08 Brown (Baram Kayal 61)
10 Stokes (McCourt 77)
27 Murphy (Samaras 69)
18 Ki Sung-Yeung,
33 Baram Kayal,
21 Ismael Bouzid
06 Palazuelos yellow card
07 Suso Santana
08 Black (Elliot 73)
16 Stevenson (McGowan 83)
09 Kyle (Obua 65)
Ref: CollumAtt: 49,023
Attempts on target
Attempts off target
93:05 The match gets underway.
90:00+1:36 Short corner taken by Shaun Maloney from the left by-line.
90:00+0:05 GOAL - Patrick McCourt:Celtic 3 - 0 Hearts Patrick McCourt gets on the score sheet with a fantastic goal from inside the six-yard box low into the middle of the goal.
Celtic 3-0 Hearts.
90:00 The referee signals the end of the game.
89:12 Georgios Samaras takes a shot. Save made by Marian Kello.
85:58 David Obua concedes a free kick for a foul on Beram Kayal. Free kick taken by Daniel Majstorovic.
83:51 Georgios Samaras produces a cross, Ismael Bouzid manages to make a clearance.
83:12 Georgios Samaras is ruled offside. Indirect free kick taken by Marian Kello.
82:30 Substitution Ryan Stevenson goes off and Ryan McGowan comes on.
80:18 Georgios Samaras takes a shot. Save made by Marian Kello.
77:50 The ball is crossed by James Forrest, Darren Barr manages to make a clearance.
75:52 Beram Kayal takes the direct free kick.
75:52 Substitution Patrick McCourt is brought on as a substitute for Anthony Stokes.
75:52 Booking Ruben Palazuelos receives a yellow card.
75:45 Foul by Ruben Palazuelos on James Forrest, free kick awarded.
75:18 Unfair challenge on Marian Kello by Anthony Stokes results in a free kick. Direct free kick taken by Marian Kello.
75:10 The ball is sent over by James Forrest.
74:19 Inswinging corner taken by Shaun Maloney from the left by-line.
73:41 Inswinging corner taken right-footed by David Templeton, Fraser Forster makes a save.
73:14 The referee blows for offside against Georgios Samaras. Free kick taken by Marian Kello.
72:29 Substitution Calum Elliot joins the action as a substitute, replacing Ian Black.
72:16 Shot on goal by Georgios Samaras from just inside the area clears the crossbar.
71:47 Shaun Maloney takes a shot. Marian Kello makes a save.
69:15 Inswinging corner taken by Emilio Izaguirre from the left by-line, save by Marian Kello.
69:10 Centre by Anthony Stokes, Marian Kello makes a save.
67:49 Daniel Majstorovic takes the direct free kick.
67:49 Substitution Georgios Samaras comes on in place of Daryl Murphy.
67:49 Adrian Mrowiec gives away a free kick for an unfair challenge on Shaun Maloney.
67:09 Glenn Loovens challenges David Obua unfairly and gives away a free kick. Ruben Palazuelos restarts play with the free kick.
64:53 Substitution Kevin Kyle leaves the field to be replaced by David Obua.
63:59 Suso Santana sends in a cross, James Forrest manages to make a clearance.
63:52 The ball is swung over by David Templeton, clearance by Glenn Loovens.
63:31 The ball is crossed by Du-Ri Cha, save by Marian Kello.
61:04 James Forrest takes a shot from just outside the penalty area clears the crossbar.
60:00 Free kick taken by Glenn Loovens.
60:00 Substitution Beram Kayal replaces Scott Brown.
60:00 The official flags Suso Santana offside.
59:33 Free kick awarded for an unfair challenge on Daniel Majstorovic by Adrian Mrowiec. Direct free kick taken by Daniel Majstorovic.
58:21 Suso Santana takes a shot. Save by Fraser Forster.
57:19 The ball is sent over by James Forrest.
56:52 Free kick awarded for an unfair challenge on Emilio Izaguirre by David Templeton. Direct free kick taken by Daniel Majstorovic.
56:04 Scott Brown gives away a free kick for an unfair challenge on Ian Black. Free kick taken by Eggert Jonsson.
55:06 Suso Santana produces a cross, save made by Fraser Forster.
54:35 Inswinging corner taken from the left by-line by David Templeton, save made by Fraser Forster.
54:06 Foul by James Forrest on David Templeton, free kick awarded. David Templeton takes the direct free kick.
52:53 Effort on goal by Anthony Stokes from just inside the penalty area goes over the target.
52:03 The ball is delivered by Ruben Palazuelos, clearance made by Emilio Izaguirre.
47:39 Kevin Kyle is ruled offside. Fraser Forster takes the free kick.
45:01 The game restarts for the second half.
45:00+0:28 Unfair challenge on Ian Black by Joe Ledley results in a free kick. Marian Kello restarts play with the free kick.
45:00+0:17 Anthony Stokes takes a shot. Save made by Marian Kello.
45:00 The match has reached half-time.
43:44 Assist on the goal came from Anthony Stokes.
43:44 GOAL - Shaun Maloney:Celtic 2 - 0 Hearts Shaun Maloney finds the net with a goal from inside the penalty area low into the middle of the goal. Celtic 2-0 Hearts.
43:02 The ball is crossed by Daryl Murphy, save made by Marian Kello.
41:48 The official flags Anthony Stokes offside. Marian Kello takes the free kick.
40:53 The assistant referee signals for offside against Kevin Kyle. Free kick taken by Fraser Forster.
39:51 Foul by Ian Black on Scott Brown, free kick awarded. Free kick taken by Glenn Loovens.
39:30 Foul by Suso Santana on Du-Ri Cha, free kick awarded. Direct free kick taken by Glenn Loovens.
39:01 The offside flag is raised against Anthony Stokes. Marian Kello takes the indirect free kick.
37:22 Joe Ledley takes a shot. Save by Marian Kello.
36:56 Free kick awarded for a foul by Ismael Bouzid on Daryl Murphy. Shaun Maloney restarts play with the free kick.
35:39 The ball is sent over by Emilio Izaguirre.
35:23 Foul by Suso Santana on Daniel Majstorovic, free kick awarded. Free kick taken by Glenn Loovens.
34:33 The referee blows for offside. Free kick taken by Eggert Jonsson.
33:20 The official flags Anthony Stokes offside. Free kick taken by Marian Kello.
32:14 Shot on goal by Kevin Kyle from just inside the area goes over the target.
31:48 Suso Santana fouled by Daryl Murphy, the ref awards a free kick. Eggert Jonsson takes the free kick.
30:46 Unfair challenge on Suso Santana by Scott Brown results in a free kick. Free kick taken by Ismael Bouzid.
29:07 Kevin Kyle fouled by Daniel Majstorovic, the ref awards a free kick. David Templeton crosses the ball in from the free kick.
27:31 Daryl Murphy provided the assist for the goal.
27:31 GOAL - James Forrest:Celtic 1 - 0 Hearts James Forrest gets on the score sheet with a goal from inside the six-yard box to the bottom left corner of the goal. Celtic
26:53 Suso Santana has an effort at goal from just inside the penalty area that bounces off the post.
23:24 The assistant referee flags for offside against Kevin Kyle. Fraser Forster takes the indirect free kick.
23:00 Unfair challenge on Kevin Kyle by Daniel Majstorovic results in a free kick. Free kick taken by Eggert Jonsson.
22:30 The offside flag is raised against Suso Santana. Emilio Izaguirre takes the free kick.
22:14 Darren Barr sends in a cross, clearance by Du-Ri Cha.
20:51 Kevin Kyle is ruled offside. Free kick taken by Glenn Loovens.
18:56 Outswinging corner taken right-footed by David Templeton, clearance made by Joe Ledley.
18:42 Ryan Stevenson takes a shot. Save by Fraser Forster.
17:29 Inswinging corner taken by David Templeton, Kevin Kyle takes a shot. Save made by Fraser Forster.
16:02 Shot from just outside the box by Ryan Stevenson goes over the bar.
15:03 The referee blows for offside. Glenn Loovens restarts play with the free kick.
14:03 Free kick awarded for a foul by Ryan Stevenson on Du-Ri Cha. The free kick is swung in left-footed by Emilio Izaguirre, save
made by Marian Kello.
13:44 The ball is delivered by Anthony Stokes, clearance made by Eggert Jonsson.
13:21 Ian Black gives away a free kick for an unfair challenge on Joe Ledley. Daniel Majstorovic takes the direct free kick.
11:21 Emilio Izaguirre gives away a free kick for an unfair challenge on Adrian Mrowiec. Ismael Bouzid takes the free kick.
9:44 Effort from outside the area by Anthony Stokes goes wide right of the goal.
7:38 The referee blows for offside. Fraser Forster takes the free kick.
1:25 A cross is delivered by David Templeton, save by Fraser Forster.
0:48 The ball is sent over by Emilio Izaguirre, save by Marian Kello.
0:19 Foul by Kevin Kyle on Du-Ri Cha, free kick awarded. Daniel Majstorovic takes the direct free kick.
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.