Zlatan Ibrahimovic curled home a stunning freekick and then turned provider as AC Milan moved to within one point of Juventus at the top of Serie A with a 3-0 home win over Cagliari on Sunday.
Miroslav Klose scored two goals in two minutes to help Lazio move up to fourth with a 3-0 win at Chievo Verona after Inter Milan slumped to a 1-0 defeat at relegation-threatened Lecce.
Sweden striker Ibrahimovic was the differnce between the sides at the San Siro, curling a freekick into the top corner from 25 metres after 32 minutes before chesting the ball down to Antonio Nocerino to volley home a second seven minutes later.
Massimo Ambrosini poked home the third goal with a neat finish with 15 minutes remaining in a win that moves Milan up to 43 points. Juventus beat third-placed Udinese 2-1 on Saturday.
Lazio's Klose grabbed his brace in the 88th and 89th minutes to take his league tally for the season to 11 after Brazilian midfielder Hernanes had opened the scoring in the 21st.
"The win was important for lifting the lads' morale after what they suffered in the two away games in Milan," Lazio coach Edy Reja told Sky Sport television after a victory that ended a run of three successive away defeats including a 3-1 loss at AC Milan in the Cup quarter-final on Thursday.
"It's very satisfying to have jumped ahead of Inter...are we good enough for third place? We will try and believe in it for as long as possible."
Uruguayan midfielder Guillermo Giacomazzi slowed Inter's challenge for the Champions League places with a low shot from close-range in the 40th minute at Lecce's Via del Mare stadium as Claudio Ranieri's men slipped to fifth.
"We have to look ahead," said Ranieri, who saw two goals disallowed for offside and who took off Dutch playmaker Wesley Sneijder at halftime to go back to a more solid 4-4-2 formation.
"We are three points behind Udinese...the Champions League threshold is our aim."
Sixth-placed AS Roma were held 1-1 at home to Bologna while seventh-placed Napoli went down 3-2 at Genoa, who had led 3-0 before a late fightback by the visitors.
Croatian Igor Budan banged in two headers, one in each half, as Palermo added to Novara's woes at the bottom of the table with a 2-0 defeat.
Atalanta beat Cesena 1-0 with defender Marco Rossi scoring a 76th minute own-goal three minutes before Atalanta's top scorer German Denis was sent off for a second yellow card.
In the Tuscan derby, Brazilian-born striker Amauri helped Fiorentina beat struggling Siena 2-1 on his club debut after signing from Juventus earlier in the week.
Montenegrin Stevan Jovetic opened the scoring after four minutes and Cesare Natali put the home side 2-0 up with a header in the 63rd.
Emanuele Calaio then grabbed a consolation goal from the penalty spot one minute from time after Serbian defender Matija Nastasic handled in the area.
Fiorentina moved up to 10th place while Siena remained on the cusp of the relegation zone in 17th place, three points ahead of Lecce in 18th.
A group of about 300 Fiorentina fans, unhappy with management and the team's form, had staged a protest outside the stadium before kickoff with banners declaring "Players and bosses you don't deserve our support" and "You must spend".