Strong selling in banking, financials and consumption stocks weighed on the benchmarks, despite positive global cues, traders said.
The 30-share BSE Sensex dropped 242.37 points or 0.76 per cent to close at 31,443.38. The broader NSE Nifty slipped 71.85 points, or 0.78 per cent, to 9,199.05.
ONGC was the top loser in the Sensex pack, slumping 4.54 per cent, followed by NTPC, Kotak Bank, Bharti Airtel, Titan and Bajaj Auto.
Index heavyweights HDFC Bank and HDFC slipped up to 2.26 per cent, accounting for most of the benchmark's losses.
Only five Sensex constituents finished in the green -- IndusInd Bank, M&M, Reliance Industries, Axis Bank and Tech Mahindra, spurting up to 6.58 per cent.
"Markets traded dull and settled with a cut of over half a per cent amid mixed cues. In line with the benchmark, it was a muted session on the sectoral front too and the majority ended in the red. However, movement on the stock-specific kept the participants busy.
"The recent surge in COVID-19 cases in India and the unending wait of the stimulus package has started taking a toll on the investors' sentiment. Besides, subdued earnings announcements are adding to the worries," said Ajit Mishra, VP - Research, Religare Broking Ltd.
Meanwhile, GSK sold its 5.7 per cent stake in FMCG major HUL for around Rs 25,480 crore -- reportedly the largest secondary trade on Indian stock exchanges.
Sectorally, BSE power, utilities, consumer durables, telecom, capital goods, FMCG and finance indices shed up to 2.47 per cent, while the energy index closed with gains.
Broader BSE midcap and smallcap indices fell up to 0.53 per cent.
World equities were buoyed by stronger-than-expected Chinese exports data, though the coronavirus pandemic and US-China tensions remained an overhang.
Bourses in Shanghai, Hong Kong and Seoul ended in the red, while Seoul closed with gains.
Stock exchanges in Europe were trading higher in early deals.
International oil benchmark Brent crude futures rallied 4.98 per cent to USD 31.20 per barrel.
The forex market in India was shut on account of 'Buddha Purnima'.
The number of coronavirus cases in India climbed to 52,952, while the death toll rose to 1,783, according to the health ministry.
Globally, the number of cases linked to the disease has crossed 37.55 lakh and the death toll has topped 2.63 lakh. ANS ABMABM