Celtic 0 - 1 St Johnstone
A second-half goal from Dave MacKay gave St Johnstone a shock first win at Celtic Park since 1998.
Kris Commons failed to convert from the penalty spot after Saints keeper Peter Enckelman brought down Anthony Stokes in the box in the third minute.
But St Johnstone eventually broke the deadlock in the 60th minute, with MacKay's shot deflected into the net.
Celtic's first league defeat means that no Scottish Premier League club has a 100% record.
The first half was characterised by sustained Celtic pressure, but an inability to convert chances.
Saints' keeper Enckelman handed Neil Lennon's side the first of those chances, when he was judged to have brought down Stokes inside the box.
But the Finn, who escaped a booking, soon made amends, diving to his right to save the resulting penalty kick from Commons.
That missed opportunity sparked Celtic into life, and Lennon's side enjoyed a spate of first half chances, most created by the industry of Shaun Maloney who set up chances for Commons and Stokes, as well missing an opportunity created by Adam Matthews in the 26th minute.
But the best chance for the home side came from a set piece, Commons almost making amends for his penalty miss with a terrific curling free kick which came off Enckelman's post five minutes before the break.
And Celtic seemed to approach the restart with gusto, Commons ekeing out another chance seconds into the half.
But it was St Johnstone who took a shock lead on the hour mark.
A move that began with a Jody Morris drive, which was beaten away by Fraser Forster, then saw MacKay volley towards goal from the right hand side of the box, his shot deflecting off Joe Ledley and past Forster.
After dominating possession throughout the match, that sucker-punch appeared to stun the Parkhead side, who struggled to regain their tempo.
Substitute Paddy McCourt, who replaced Commons immediately after the goal, offered a piece of individual skill almost immediately, twisting and turning his way through a wall of blue jerseys in the St Johnstone box before eventually being dispossessed.
In defence though, Celtic were in disarray, confusion between Daniel Majstorovic and Forster almost allowing Saints substitute Sean Higgins clear through on goal 20 minutes from the end.
McCourt continued to create chances, a shot five minutes from time coming off the post, the Irishman drawing a free-kick on the edge of the box out of Saints defender Callum Davidson, but Maloney's set piece was marginally off target.
And a hard-working and resolute St Johnstone defence managed to neutralise a flurry of late chances to secure Derek McInnes's first win of the season and increase the pressure on Celtic ahead of their midweek Europa League tie.
Live Text Commentary
Full Time The match has reached full-time.90:00 +1:50
Shaun Maloney is caught offside. Peter Enckelman takes the free kick.90:00 +0:47
Corner taken short by Liam Craig.90:00 +0:22
Liam Craig takes a short corner.89:16
Unfair challenge on Murray Davidson by Shaun Maloney results in a free kick. Free kick taken by Peter Enckelman.87:48
Shot from just outside the box by Adam Matthews goes over the crossbar.86:14
Free kick awarded for a foul by Patrick McCourt on Murray Davidson. Free kick taken by Peter Enckelman.83:11
Shaun Maloney has an effort direct from the free kick.83:11 Booking
Booking Callum Davidson goes into the book for unsporting behaviour.82:53
Patrick McCourt fouled by Callum Davidson, the ref awards a free kick.80:27
Corner from the right by-line taken by Sung-Yeung Ki, Anthony Stokes takes a shot. Peter Enckelman makes a save.80:01
Outswinging corner taken by Sung-Yeung Ki from the right by-line, clearance made by Liam Craig.79:35
Shot by Anthony Stokes from deep inside the penalty box hits the post.78:57
A cross is delivered by James Forrest, David McCracken makes a clearance.77:49
Effort from outside the penalty area by Murray Davidson goes wide left of the goal.76:55
Corner from left by-line taken by Mark Wilson.75:11
Daniel Majstorovic restarts play with the free kick.75:11 Booking
Booking Caution for David McCracken.74:56
Foul by David McCracken on Shaun Maloney, free kick awarded.73:10 Substitution
Substitution James Forrest on for Joe Ledley.
The assistant referee flags for offside against Sung-Yeung Ki. Free kick taken by Peter Enckelman.71:34
The referee blows for offside. Peter Enckelman takes the indirect free kick.71:02 Substitution
Substitution Marcus Haber replaces Francisco Sandaza.69:41
Centre by Adam Matthews, clearance by David McCracken.68:49
Patrick McCourt decides to take a short corner.68:23
Francisco Sandaza takes a shot. Save by Fraser Forster.66:55
Mark Wilson concedes a free kick for a foul on David MacKay. David McCracken restarts play with the free kick.65:39
Sean Higgins challenges Joe Ledley unfairly and gives away a free kick. Direct free kick taken by Sung-Yeung Ki.65:17
David MacKay produces a cross.64:34
Corner taken by Liam Craig.62:23 Substitution
Substitution Sean Higgins replaces Cillian Sheridan.60:45 Substitution
Substitution (Celtic) makes a substitution, with Patrick McCourt coming on for Kris Commons.59:20
Assist by Liam Craig.59:20 Goal scored
Goal! - David MacKay - Celtic 0 - 1 St J'stone David MacKay gets on the score sheet with a goal from just inside the area to the bottom left corner of the goal. Celtic 0-1 St Johnstone.59:05
Callum Davidson takes a shot. Fraser Forster makes a save.57:25
Kris Commons delivers the ball, Anthony Stokes takes a shot. Save by Peter Enckelman.56:00
The referee blows for offside. Peter Enckelman restarts play with the free kick.54:26
Cillian Sheridan has an effort at goal from close range which goes wide right of the target.54:03
Kris Commons crosses the ball, save by Peter Enckelman.53:33
Corner from the right by-line taken by Kris Commons, David McCracken manages to make a clearance.53:02
Anthony Stokes takes a shot. Clearance made by David McCracken.50:27
Corner taken by Kris Commons, Liam Craig makes a clearance.50:00
Scott Brown takes a shot. Jody Morris makes a clearance.48:02
Anthony Stokes has a headed effort at goal from close in which goes wide left of the target.47:45
The ball is crossed by Adam Matthews.46:47
Joe Ledley gives away a free kick for an unfair challenge on Cillian Sheridan. David McCracken takes the free kick.45:14
Shot from just outside the area by Kris Commons misses to the left of the target.45:01
The match restarts for the second half.45:01 Substitution
Substitution Charlie Mulgrew goes off and Mark Wilson comes on.45:00 +1:11 Half time
Half Time The players leave the pitch at half time.41:24
Outswinging corner taken by Sung-Yeung Ki, Header from close in by Anthony Stokes misses to the right of the target.40:13
Direct effort from the free kick comes in from Kris Commons.40:13 Booking
Booking The referee shows Liam Craig a yellow card for dissent.39:30
Murray Davidson gives away a free kick for an unfair challenge on Sung-Yeung Ki.38:52
Corner taken right-footed by Sung-Yeung Ki, clearance by David MacKay.38:30
Sung-Yeung Ki takes a shot. Blocked by Liam Craig.37:29
The ball is crossed by Jody Morris, save by Fraser Forster.37:18
The ball is sent over by Liam Craig.35:10
The referee blows for offside. Fraser Forster takes the indirect free kick.34:05
Unfair challenge on Francisco Sandaza by Victor Wanyama results in a free kick. Alan Maybury takes the direct free kick.33:28
The referee blows for offside against Francisco Sandaza. Indirect free kick taken by Fraser Forster.32:24
Murray Davidson fouled by Scott Brown, the ref awards a free kick. Jody Morris takes the free kick.30:35
The offside flag is raised against Shaun Maloney. Peter Enckelman takes the indirect free kick.28:57
Charlie Mulgrew takes a shot. Peter Enckelman makes a save.27:37
Kris Commons concedes a free kick for a foul on Alan Maybury. Peter Enckelman takes the direct free kick.25:45
The ball is delivered by Adam Matthews, Shaun Maloney has a headed effort at goal from close in which goes wide left of the target.24:55
Corner taken by Liam Craig from the left by-line, clearance by Adam Matthews.24:48
The ball is delivered by David MacKay, Daniel Majstorovic manages to make a clearance.24:22
Corner taken by Liam Craig, clearance by Victor Wanyama.24:15
Liam Craig sends in a cross, clearance by Scott Brown.23:27
Unfair challenge on Francisco Sandaza by Daniel Majstorovic results in a free kick. Liam Craig restarts play with the free kick.22:51
Foul by David MacKay on Joe Ledley, free kick awarded. Charlie Mulgrew takes the free kick.21:48
Corner taken left-footed by Liam Craig, Daniel Majstorovic makes a clearance.21:05
Anthony Stokes produces a left-footed shot from close in which goes wide of the right-hand upright.14:51
Shaun Maloney crosses the ball, Close range effort by Kris Commons goes wide of the right-hand upright.14:22
Anthony Stokes delivers the ball, David MacKay makes a clearance.9:23
The offside flag is raised against Cillian Sheridan. Free kick taken by Adam Matthews.8:19
Inswinging corner taken from the left by-line by Sung-Yeung Ki, Charlie Mulgrew takes a shot. Peter Enckelman makes a save.8:08
Shaun Maloney delivers the ball, clearance made by David McCracken.7:48
Liam Craig delivers the ball, Fraser Forster makes a save.7:16
Liam Craig sends in a cross, save by Fraser Forster.4:32
Outswinging corner taken by Liam Craig from the left by-line, Charlie Mulgrew makes a clearance.2:08 Penalty
Penalty taken by Kris Commons saved by Peter Enckelman. Celtic 0-0 St Johnstone.1:57
Peter Enckelman challenges Anthony Stokes unfairly and gives away a Penalty.0:00
The ref blows the whistle to begin the match.
Live data and text provided by our data suppliers