Celtic were heading for the last 32 following Stefan Johansen's brilliant strike 32 minutes into a game that looked set to be postponed amid poor visibility at the Marin Anastasovici stadium.
Stefan Scepovic missed a good chance to double Celtic's lead and Charlie Mulgrew saw a shot pushed on to the post two minutes before William Amorim equalised in the 79th minute.
The Brazilian curled home from a difficult position to find the brilliance that was needed to beat Craig Gordon.
Leigh Griffiths had a goal disallowed in the 83rd minute, which, with Salzburg beating Dinamo Zagreb, would have sent Celtic through but they remain in a strong position, five points ahead of the Croatians with two games left.
The match began in near-farcical conditions with serious discussion taking place over a postponement until Friday lunchtime, with thick fog making it impossible to see from one end of the stadium to the other.
The UEFA delegate took several photographs of the scenes before disappearing back down the tunnel for discussions but the game went ahead, with Gordon restored to the Celtic team and Callum McGregor and Stefan Scepovic in place of the ill Anthony Stokes and ineligible John Guidetti.
Celtic looked comfortable early on and Johansen forced the first save
Emilio Izaguirre nutmegged an opponent inside the box and drove the ball across for the Norwegian to strike first time from 12 yards but home goalkeeper Silviu Lung did well to parry.
Gordon continued his impressive Europa League form with a stunning save in the 27th minute
The ball sat up perfectly for Seidou Yahaya 20 yards out and the Ghanaian hit a powerful shot that was swerving away from the goalkeeper and into the top corner but the former Hearts and Sunderland man threw himself to his left to push the ball wide for a corner.
Celtic were ahead five minutes later as Johansen made the most of Mulgrew's blocked free-kick to score against Astra for the second successive game.
The Norwegian won the free-kick himself after being fouled by Ben Youssef on the edge of the box and stood over the ball before Mulgrew fired into the wall.
But a home player sent a very weak clearance straight to Johansen, who responded with a first-time left-footed effort that dipped into the top corner with the aid of a slight deflection.
Lung held Mubarak Wakaso's long-range strike as Celtic broke but the Scottish champions had a close escape with a minute of the half remaining.
A ball through the heart of the Celtic defence sent Sadat Bukari clear and he looked set to pull the trigger when Jason Denayer caught up and put him under pressure
The Belgian put his arm across the Ghanaian but Bakari went down easily and the Ukrainian referee penalised him for handball after he grabbed the ball in expectation of a penalty.
Mulgrew had a 25-yard strike pushed over in injury time and Celtic had a good chance to double their lead just after the break when Johansen fed Scepovic but the Serbian skied his effort.
Constantin Budescu soon volleyed well over from a decent opportunity at the other end but another effort from the Astra captain - a 45-yard effort that bounced wide - signalled a hint of desperation about the home side.
Gordon was called into action again, beating away an ambitious effort from Vassilis Pliatsikas, before substitute Griffiths had a volley well blocked following good counter-attack play.
Mulgrew soon saw his bouncing 30-yard effort pushed on to the post by Lung.
The save proved crucial
A precise passing move soon ended with George Florescu laying the ball off to Amorim, who curled a first-time effort into the far top corner from wide-left of the box.
Celtic immediately stepped up a gear and Lung produced a wonderful stop to deny Griffiths after the striker had taken the ball round the goalkeeper.
The former Hibernian striker had the ball in the net seconds later but he was penalised for nudging Cristian Oro as the Romanian defender went to head away after a half-cleared corner was headed back into the box.
Gordon had a rare fumble with three minutes left following Florescu's bouncing long-range strike but Mikael Lustig swept up the danger.
There was more drama in injury time when Vincent Laban was sent off for a terrible, flying late challenge on Mulgrew, with Van Dijk somewhat fortunate to escape with a yellow card for smacking the offender on the back of his head.
Source : PA
Source: PA