Celtic had their second-half chances and Georgios Samaras hit the post.
However, Martin Scott volleyed home a second to send the First Division side into their first-ever major final.
The victory signalled celebrations among the Dingwall side's 7,000 fans - more than the population of the town that houses the club who moved up from the Highland League to the Scottish Football League in 1994.
Scott silenced the Celtic support with County's secondAnd it left caretaker manager Lennon and his Celtic side nursing the bruises of a defeat that will be compared to the one suffered against County's neighbours, Inverness Caledonian Thistle, a result that led to the sacking of John Barnes in 2000.
County had pressed from the start and didn't allow Celtic time to settle, but Robbie Keane always looked dangerous whenever he took possession.
Aiden McGeady almost slipped in Keane, but the ball hit the striker's heel, summing up their early struggles.
The First Division side's best effort of the opening half arrived on 17 minutes when Lukasz Zaluska was forced to tip over Scott Morrison's dangerous cross from the left.
Celtic had few flourishes forward, but Scott Boyd had to clear Marc-Antoine Fortune's pass across goal from the right just before the half-hour mark as Keane lurked with intent.
County remained full of running and put together some tidy moves around the edge of Celtic's area without ever seriously threatening.
The match continued a familiar pattern with the Dingwall side enjoying the majority of possession and Lennon's men hoping to find Keane with a killer pass.
Marc Crosas replaced Cameroon midfielder Landry N'Guemo for Celtic on the brink of half-time in a tactical switch as the lethargic Premier League team looked for a change in fortunes.
County again forged forward at the start of the second half and Craig blazed over at the back post from Vigurs' cross.
Samaras performed some good work on the left wing for Celtic and centred the ball, but there were no takers.
Iain Vigurs then looked to have spurned a magnificent opportunity for the Highland side when Richard Brittain's corner arrived at his feet and he shot wide with the goal at his mercy, but a foul had been given.
However, the Victoria Park side did not have long to wait to take a stunning lead as Craig cut in from the right and produced a scything run through the Celtic defence and finished emphatically.
Celtic had suffered a miserable season and would have to act decisively if things were not to get a whole lot worse.
MY SPORT: DEBATE Give your thoughts on the semi-final Fortune looked certain to level with just over quarter of the game remaining after a Lee Naylor free-kick broke to him in the box, but his left-foot finish was deflected behind from four yards.
The striker was then replaced with Paddy McCourt as Lennon searched for a spark.
County were having to survive an onslaught as Celtic fought desperately to save their season, but they held firm.
Zaluska had to pull of a smart save from Brittain's long-range effort as Adams' side looked to kill off Celtic's challenge.
Samaras should have levelled for Celtic when he smacked the ball off the post after McGeady's cross.
But County finished off the game as Andy Barrowman crossed for Scott to volley home from close range and all but end Celtic's season.
Live text and stats
Saturday, 10 April 2010
Home Team Score Away Team Time Celtic 0-2 Ross County FT (HT 0-0) Craig 55 Scott 88 Celtic 24 Zaluska 02 Hinkel (Rasmussen 84) 03 Naylor 38 Thompson 48 O'Dea yellow card 06 N'Guemo (Crosas 42) 08 Brown 46 McGeady 07 Keane 09 Samaras 10 Fortune (McCourt 67) Substitutes 47 Cervi, 12 Wilson, 17 Crosas, 20 McCourt, 19 Rasmussen Ross County 01 McGovern 02 Miller yellow card 03 Morrison 05 Boyd 06 Keddie 04 Scott 10 Brittain 11 Vigurs 07 Gardyne (Lawson 90+1) 08 Barrowman 09 Craig Substitutes 18 Malin, 14 Kettlewell, 15 Lawson, 12 Di Giacomo, 16 Wood Ref: CollumAtt: 24,535 CELTIC ROSS COUNTY Possession Celtic 52% Ross County 48% Attempts on target Celtic 5 Ross County 12 Attempts off target Celtic 3 Ross County 5 Corners Celtic 4 Ross County 8 Fouls Celtic 9 Ross County 12 Final Result Full Time 90:00+3:08 The game is over, as the referee blows his whistle. 90:00+2:45 The ball is delivered by Georgios Samaras, Richard Brittain gets a block in. 90:00+2:29 Iain Vigurs gives away a free kick for an unfair challenge on Aiden McGeady. Scott Brown takes the free kick. 90:00+1:37 Short corner worked by Lee Naylor. 90:00+0:49 Substitution Paul Lawson on for Michael Gardyne. 89:28 Georgios Samaras takes a shot. Scott Morrison manages to make a clearance. Aiden McGeady takes a shot. Scott Boyd gets a block in. 88:56 The ball is sent over by Lee Naylor. 87:30 Assist on the goal came from Andrew Barrowman. 87:30 GOAL - Martin Scott:Celtic 0 - 2 Ross County Martin Scott gets on the score sheet with a goal from inside the six-yard box low into the middle of the goal. Celtic 0-2 Ross County. 87:19 The ball is delivered by Andrew Barrowman, 86:17 Aiden McGeady produces a cross, Close range header by Robbie Keane goes wide of the left-hand post. 85:34 Inswinging corner taken from the left by-line by Richard Brittain, Lee Naylor makes a clearance. 85:08 Steven Craig takes a shot. Blocked by Darren O'Dea. 83:15 Substitution Morten Rasmussen on for Andreas Hinkel. 82:38 The ball is delivered by Aiden McGeady, Effort from inside the six-yard area by Georgios Samaras strikes the post. 81:38 Lee Naylor delivers the ball, blocked by Steven Craig. 80:32 Free kick awarded for an unfair challenge on Marc Crosas by Martin Scott. Free kick taken by Marc Crosas. 78:41 Scott Morrison takes a shot. Josh Thompson gets a block in. The ball is delivered by Michael Gardyne. Richard Brittain takes a shot. Save by Lukasz Zaluska. 77:05 Scott Boyd takes the free kick. Steven Craig fouled by Georgios Samaras, the ref awards a free kick. Scott Morrison fires a strike on goal direct from the free kick. 77:05 Booking The referee shows Darren O'Dea a yellow card for unsporting behaviour. 76:58 Foul by Darren O'Dea on Richard Brittain, free kick awarded. 75:18 The offside flag is raised against Robbie Keane. Michael McGovern takes the indirect free kick. 74:56 Robbie Keane sends in a cross, Alexander Keddie makes a clearance. 74:03 Michael Gardyne delivers the ball, clearance by Josh Thompson. 72:21 Inswinging corner taken by Iain Vigurs. 71:34 Andrew Barrowman takes a shot. Blocked by Josh Thompson. Inswinging corner taken by Richard Brittain from the left by-line, Scott Boyd takes a shot. Blocked by Darren O'Dea. 71:10 Patrick McCourt takes a shot. Blocked by Richard Brittain. 70:42 The ball is crossed by Steven Craig, save by Lukasz Zaluska. 69:04 Free kick crossed by Lee Naylor, Alexander Keddie manages to make a clearance. 69:04 Booking Gary Miller shown a yellow card. 68:57 Gary Miller challenges Patrick McCourt unfairly and gives away a free kick. 68:42 Centre by Scott Brown. 68:17 The ball is crossed by Scott Brown. 66:08 Lee Naylor restarts play with the free kick. 66:08 Substitution Marc-Antoine Fortune leaves the field to be replaced by Patrick McCourt. 66:08 Andreas Hinkel fouled by Steven Craig, the ref awards a free kick. 65:38 Inswinging corner taken left-footed by Lee Naylor, clearance by Martin Scott. 64:45 Scott Boyd gives away a free kick for an unfair challenge on Robbie Keane. Centre by Lee Naylor, Marc-Antoine Fortune takes a shot. Blocked by Scott Morrison. 64:10 Iain Vigurs gives away a free kick for an unfair challenge on Scott Brown. Free kick taken by Andreas Hinkel. 61:48 Martin Scott takes a shot. Lukasz Zaluska makes a save. 59:41 Centre by Georgios Samaras, Michael McGovern makes a save. 58:29 Michael Gardyne has a shot and went wide left of the target. 57:38 A cross is delivered by Marc-Antoine Fortune, clearance by Alexander Keddie. 56:34 Michael Gardyne takes a shot. Blocked by Andreas Hinkel. 55:26 Outswinging corner taken from the left by-line by Lee Naylor. 55:22 Georgios Samaras crosses the ball, Alexander Keddie makes a clearance. 54:20 GOAL - Steven Craig:Celtic 0 - 1 Ross County A goal is scored by Steven Craig from inside the penalty box to the bottom left corner of the goal. Celtic 0-1 Ross County. 53:31 Corner taken by Richard Brittain, Foul by Andrew Barrowman on Lukasz Zaluska, free kick awarded. Free kick taken by Lukasz Zaluska. 52:55 Iain Vigurs takes the inswinging corner, Alexander Keddie takes a shot. Josh Thompson makes a clearance. 52:45 Scott Morrison delivers the ball, Lee Naylor makes a clearance. 52:11 Foul by Georgios Samaras on Steven Craig, free kick awarded. Direct free kick taken by Gary Miller. 50:42 Centre by Georgios Samaras, clearance by Scott Morrison. Corner from left by-line taken by Lee Naylor. The referee blows for offside against Marc-Antoine Fortune. Indirect free kick taken by Michael McGovern. 50:01 Robbie Keane is adjudged to have handled the ball. Direct free kick taken by Scott Boyd. 49:13 A cross is delivered by Iain Vigurs, clearance made by Darren O'Dea. Effort on goal by Steven Craig from inside the area goes harmlessly over the bar. 48:30 Foul by Aiden McGeady on Scott Morrison, free kick awarded. Alexander Keddie restarts play with the free kick. Centre by Richard Brittain. The ball is crossed by Steven Craig. 47:51 Foul by Georgios Samaras on Richard Brittain, free kick awarded. Michael McGovern takes the direct free kick. 47:03 Richard Brittain sends in a cross. 46:25 Marc-Antoine Fortune concedes a free kick for a foul on Michael Gardyne. Iain Vigurs takes the direct free kick. The ball is crossed by Richard Brittain, blocked by Andreas Hinkel. 45:01 The referee blows his whistle to start the second half. Half Time 45:00+0:05 The referee blows for half time. 44:48 Alexander Keddie challenges Marc-Antoine Fortune unfairly and gives away a free kick. Direct free kick taken by Marc Crosas. 43:41 Free kick awarded for an unfair challenge on Georgios Samaras by Scott Morrison. Direct free kick taken by Andreas Hinkel. 41:18 Indirect free kick taken by Michael McGovern. 41:18 Substitution (Celtic) makes a substitution, with Marc Crosas coming on for Landry N'Guemo. 41:18 Robbie Keane is ruled offside. 40:41 Aiden McGeady produces a cross, Scott Boyd manages to make a clearance. 39:35 Inswinging corner taken left-footed by Iain Vigurs, Alexander Keddie has a headed effort at goal from close in which goes wide left of the goal. 38:45 Free kick awarded for an unfair challenge on Michael Gardyne by Landry N'Guemo. The free kick is swung in right-footed by Richard Brittain, Josh Thompson manages to make a clearance. 38:08 Centre by Aiden McGeady, Scott Boyd manages to make a clearance. 34:46 Landry N'Guemo gives away a free kick for an unfair challenge on Iain Vigurs. Richard Brittain takes the direct free kick. A cross is delivered by Scott Morrison, clearance made by Darren O'Dea. 33:55 The referee penalises Gary Miller for handball. Direct free kick taken by Lee Naylor. 32:46 The offside flag is raised against Georgios Samaras. Gary Miller takes the free kick. 30:07 Richard Brittain gives away a free kick for an unfair challenge on Aiden McGeady. Lee Naylor takes the direct free kick. 29:20 Gary Miller produces a cross. 28:07 Andrew Barrowman challenges Landry N'Guemo unfairly and gives away a free kick. Scott Brown takes the direct free kick. 27:11 Marc-Antoine Fortune delivers the ball, Scott Boyd makes a clearance. 26:43 Centre by Georgios Samaras, Scott Morrison manages to make a clearance. 20:56 Iain Vigurs produces a cross. 19:42 Marc-Antoine Fortune takes a shot. Blocked by Scott Boyd. 17:18 Martin Scott has an effort at goal from outside the penalty box which goes wide right of the target. 16:49 Scott Morrison crosses the ball, Lukasz Zaluska makes a save. Short corner taken by Iain Vigurs. 14:50 Martin Scott fouled by Landry N'Guemo, the ref awards a free kick. The free kick is delivered left-footed by Iain Vigurs from right wing, save made by Lukasz Zaluska. 12:47 Richard Brittain takes a shot. Darren O'Dea gets a block in. 11:22 Steven Craig crosses the ball, clearance by Darren O'Dea. 10:39 Free kick awarded for a foul by Steven Craig on Lee Naylor. Direct free kick taken by Lukasz Zaluska. 9:37 Richard Brittain delivers the ball, save made by Lukasz Zaluska. 8:22 Marc-Antoine Fortune takes a shot. Gary Miller gets a block in. 7:07 The assistant referee flags for offside against Andrew Barrowman. Lukasz Zaluska restarts play with the free kick. 6:39 Andreas Hinkel crosses the ball, Scott Boyd manages to make a clearance. 5:34 Inswinging corner taken by Iain Vigurs from the right by-line, Georgios Samaras manages to make a clearance. 2:51 Long range effort from Andrew Barrowman misses to the left of the target. 0:00 The game kicks-off. Live text and data provided by The Press Association.