The Sensex surged by 460 points and Nifty regained the 12,000-mark after two sessions of sharp declines, as global markets reversed course over easing crude oil prices on Tuesday.
The global benchmark, Brent fell 1.19 per cent to trade at $68 a barrel on Tuesday morning.
At 9.40 am, the Sensex was quoting 41,142.40 up 465.77 points or 1.15 per cent. It opened sharply higher at 40,983.04 from its previous close of 40,676.63.
The broader Nifty jumped 142 points to trade at 12,134.90.
All the Nifty sectoral indices except Nifty IT index were trading in the green. Nifty PSU Bank index gained over 2 per cent.
The rupee also rose 0.28 percent to 71.7275 against the dollar.
Oil surrendered some hefty gains as many doubted Iran would strike back in a way that would disrupt supplies and its own crude exports.
The price of oil surged in the last two trading sessions after a drone strike by the US in Baghdad killed top Iranian military commander Qassem Soleimani, sparking fears of an escalation in conflict and supply disruptions in the region.
The spike in crude prices roiled Indian equities, with the Nifty falling just over 2 percent on Monday, recording its worst intraday fall since September 3.
BSE lost 3.09 trillion rupees in market value, while NSE lost 3.05 trillion rupees in market value, as per Refinitiv Eikon data.
Some analysts were sceptical about the strength of the rally. "The kind of rally we are witnessing today, I don't think it will carry on. I think investors will take benefit of this and try to cut down on their position in the market," said Saurabh Jain, assistant vice-president at SMC Global Securities Ltd in New Delhi.
Asian shares also rebounded on Tuesday. Gold retreated to $1,557.54 an ounce, after scaling a near seven-year peak of $1,579.72 overnight.
Interglobe Aviation Ltd and SpiceJet Ltd rose 1.86 percent and 2.05 percent while shares of oil marketing companies also rose. Indian Oil Corporation was up 1.04 percent and Bharat Petroleum Corporation Ltd rose 0.81 percent.
(With agency inputs.)