The Sens*x, which commenced the day higher and tumbled to touch a low of 14,355.52, closed at 14,645.47, showing a gain of 151.63 points.
The 50-share National Stock Exchange index Nifty rose 49.80 points at 4,340.90 after touching a low of 4,249.70. It touched the day's high of 4,362.30 points.
Marketmen said trading sentiment was mixed as brokers and funds shifted portfolios ahead of the general Budget on Monday.
They said buying was mostly in construction and engineering sector stocks on hopes that the government is likely to invest in a big way to revive infrastructure sector.
Among the 30 BSE stocks, five ended with losses while 25 recorded moderate to notable gains.
Reliance Industries was up 1.68 per cent, Infosys 1.11 per cent, Tata Motors 2.80 per cent, ICICI Bank one per cent, Larsen and Toubro 0.38 per cent, DLF Ltd 4.76 per cent and Tata Steel by 1.07 per cent.
The realty sector index gained the most, 4.25 per cent, to 3,343.51, followed by the teck index, 1.56 per cent, to 2,644.07. The banking index rose 1.33 per cent to 8,321.05.