The state-owned company posted a net profit of 129.67 billion rupees ($1.56 billion) for the quarter ended Sept. 30, compared with a loss of 2.72 billion rupees a year earlier.
Analysts on average expected a profit of 94.37 billion rupees, according to LSEG data.
Indian fuel retailers have not revised pump prices for months to insulate consumers from global crude price fluctuations.
The company said its gross refining margin, or profit from converting a barrel of crude oil into refined products, was $13.12 per barrel in the six months to September, compared with $25.49 per barrel a year earlier.
While revenue from operations fell 11.4% to 2.02 trillion rupees, expenses more than offset the decline, dropping 19.5%.
Indian Oil, along with its unit Chennai Petroleum, controls about a third of India’s five million-barrels-per-day refining capacity.
Last week, smaller peer Bharat Petroleum Corp also reported a profit compared to a loss, a year ago.
Reporting by Sethuraman NR in Bengaluru; Editing by Savio D’Souza – Reuters