Djokovic, the Monte Carlo champion in 2013 and 2015, was broken five times by the 33rd-ranked Evans and suffered his first loss of the year, having won the Australian Open for the ninth time in February.
Evans, who dumped out this month's Miami Open winner Hubert Hurkacz in the previous round, will play 11th seed David Goffin for a place in the semi-finals.
Goffin beat US Open runner-up Alexander Zverev 6-4, 7-6 (9/7) earlier in the day.
An out-of-sorts Djokovic produced an uncharacteristic 45 unforced errors against Evans, who hadn't won a tour-level match on clay since April 2017 before this week.
"To be honest this has been one of the worst matches from my side I can recall in the last few years," said Djokovic.
"I felt awful on the court overall. Nothing worked. Just one of those days.
"It was just an awful performance. I can't take any positives away from this match. It definitely leaves a bitter feeling exiting the court this way."