The match also witnessed three red cards in stoppage time, with Milan being reduced to nine men as tensions flared
The win moved seventh-placed Everton, who had not won in 20 attempts in the league against their Merseyside rivals, level with Liverpool on 40 points.
Brazilian Richarlison put Carlo Ancelotti's side ahead in the third minute with a cool finish after a delightful through ball from James Rodriguez.
An 83rd minute penalty from substitute Gylfi Sigurdsson, after Dominic Calvert-Lewin was ruled to have been brought down by Trent Alexander-Arnold, made sure of the win for Everton.
Liverpool have not lost four home matches in a row in the league since 1923.