Champions Milan, who took the lead on 14 minutes with an Antonio Nocerino strike, keep their one-point lead over their undefeated Turin rivals.
However, Juventus still have a game in hand.
The biggest talking point was the officials' failure to award Milan's Sulley Muntari a goal on 25 minutes when his goal-bound header clearly crossed the line but was not awarded.
That embarrassing error, however, was balanced out by the referee disallowing a Matri 'goal' 11 minutes from time for an offside which looked particularly harsh.
"That incident that certainly falsified the result. Either the line was drawn wrong and was a bit too big," said Milan coach Massimiliano Allegri.
"There’s no need to see the replays. It was pretty obvious from all round the stadium."
Juventus coach Antonio Conte, who reportedly had a bust-up with Milan chief executive Adriano Galliani at half-time, criticised the atmosphere surrounding the match.
"This match was charged up too much by everyone beforehand. The atmosphere wasn't good for the sport. Too much happened that has nothing to do with soccer," he said.
Milan made the more aggressive start even though they were without a long list of injured players as well as suspended top-scorer Zlatan Ibrahimovic and it was no surprise when Nocerino put them ahead.
The midfielder had a double helping of assistance from Juve defender Leonardo Bonucci, who created the chance by being careless with possession and then deflected the shot to give keeper Gianluigi Buffon no chance of saving it.
The hosts kept up the pressure after taking the lead and should have gone 2-0 up on 25 minutes when Ghanaian Muntari nodded in a rebound when Buffon could only parry a header by Philippe Mexes.
Replays showed the ball had entered the goal by at least half a metre before Buffon scrambled it away.
But the referee waved play on and Christian Abbiati had to produce a good save at the other end to stop Juve's Marcelo Estigarribia levelling the score.
"It was an incredible goal. Only the referee didn't see it," Milan forward Robinho told Sky television at half-time.
Milan were dominant, pressing Juve hard when they were in possession and always seeming to arrive at 50-50 balls first with Robinho posing a constant threat with some surging runs.
Mark van Bommel came close to extending their advantage when he thumped the ball just wide three minutes before the break.
Philippe Mexes was lucky not to be sent off soon after the re-start when officials did not see him punch Marco Borriello in an off-the-ball incident.
The champions continued to make almost all the running until Juve came back into the game with Abbiati stopping a short-range effort from Fabio Quagliarella in the 69th minute.
But Matri made up for the disappointment of having his goal disallowed with the leveller seven minutes from time.
In the closing minutes, Juventus had Arturo Vidal sent-off.
Earlier on Saturday, Argentine forward Rodrigo Palacio scored twice to earn Genoa a 2-2 home draw with Parma after Massimo Gobbi and Sergio Floccari had given the visitors a 2-0 lead.
Champions League participants Napoli, who are sixth, host seventh-placed Inter Milan in the other big match of the weekend on Sunday.
Inter boss Claudio Ranieri is under huge pressure after his side lost six of their last seven games.
Third-placed Udinese visit Bologna, while fourth-placed Lazio face Fiorentina in Rome after the club rejected coach Edoardo Reja's resignation on Wednesday.