The Congress' tally increased to 15. Independents won three.
The election for local body presidents, including in four municipalities and 39 Nagar Parishads, was held on August 11, just over a month after five farmers were killed in police firing.
MP local body elections: BJP wins majority
The local body election results in details
Bypolls were held at four bodies. Contest was necessitated in Gadarwara and Shamshabad after the incumbent presidents were removed under the Right to Recall.
Voting was deferred in Barwani and Dhar because of agitation.
BJP also won Shahdol and Dindori. Alirajpur, Jhabua and Mandla went to Congress.
In 2012, BJP had won 25 of 37 seats, and Congress and Independents had won six each.
What's the right to recall?
The Right to Recall allows corporators to approach a collector with a no-confidence motion against the sitting president of a council. Right to Recall was initially proposed in Kurawar and Sabalgarh too, but elections were turned down by a court.
Love Politics news?
Stay updated with the latest happenings.
Congress celebrates its 'big win'
An excited Congress called the results a "sign of change". "We've defeated BJP candidates at Nasrullaganj, which falls under Sushma Swaraj's constituency, and Sanawad, which falls under Nandkumar Singh Chauhan's seat," Congress' Ajay Singh said.
Singh added the Congress had won 13 of 31 bodies despite massive campaigning by CM Shivraj Singh Chouhan.
But Congress lost Dabra, which falls under Jyotiraditya Scindia's pocket borough.
But CM Chouhan knew BJP would win
However, CM Chouhan had been confident about winning 26 seats from before. He had ruled out any impact of the violent farmers' protests, "since it was led by a handful of Congress workers who tried to spread unrest".
Another hack at HBO? Channel now loses social media accounts
You've understood the errors of your predecessors: Taliban tells Trump