Cristiano Ronaldo scored his second hat-trick in four days and Karim Benzema netted a spectacular overhead kick to give Real Madrid a 4-1 win at Ajax Amsterdam in Champions League Group D on Wednesday.

A dominant Real wasted a host of chances before Ronaldo pounced on a loose ball to score from close range in the 42nd minute and Benzema finished off a swift Real break three minutes into the second half when he smashed home a Kaka centre.

Real's vulnerability at set pieces gave Ajax hope in the 56th minute when Niklas Moisander stole in at the far post at a corner and nodded under Iker Casillas before Ronaldo scored twice in two minutes to kill off the game.

The victory consolidated Real's lead at the top of the group with six points from two matches as the record winners bid for the 10th European title that has eluded them since 2002.

Mario Balotelli scored with a last-minute penalty to earn Manchester City a Champions League lifeline in a 1-1 home draw with Borussia Dortmund.

The German side took the lead when Marco Reus pounced on a poor cross-field pass from City substitute Jack Rodwell to race clear and finish past City keeper Joe Hart on 61 minutes.

Dortmund continued to dominate and were thwarted on several occasions by fantastic saves from Hart but were made to pay in the dying seconds when Sergio Aguero struck the ball against the arm of Neven Subotic.

Referee Pavel Kralovec pointed to the spot and Italian Balotelli calmly stroked the ball low into the net to give the English champions their first point the group. Dortmund are second on four points, two behind leaders Madrid.

Colombian James Rodriguez hit a swerving left-footed winner with only five minutes to go to hand Porto a 1-0 victory over Paris St Germain and give the Portuguese champions maximum points in Group A after two rounds.

Porto bossed PSG from the start, pressed high and controlled most of possession, relegating the Ligue 1 runners-up to occasional counter attacks.

Although Rodriguez's goal came late, there were plenty of chances for both sides. Porto could have gone ahead earlier through busy midfielder Joao Moutinho and Rodriguez, who both missed several chances.

PSG's pricey striker Zlatan Ibrahimovic, who turned 31 today, also had two excellent chances of his own, which he wasted.

Elsewhere in Group A, Dynamo Kiev got their campaign up and running with a routine home win over Dinamo Zagreb.

Oleg Gusev grabbed an early lead in just the third minute before a 34th-minute Josip Pivaric own goal ensured a comfortable night.

After suffering a 4-1 humbling in their opener against Paris St Germain a fortnight ago it meant Dynamo immediately bounced back with their first points of the campaign.

For their beaten visitors it was an eighth consecutive defeat in the group stage of the Champions League.

Arsenal put themselves in pole position to reach the knockout rounds with a 3-1 home victory in Group B over Olympiakos at the Emirates.

Goals either side of halftime from Gervinho and Lukas Podolksi set up the Gunners' second successive win in the group before Aaron Ramsey came off the bench to score the third with the final move of the game.

Gervinho gave Arsenal the lead against the run of play in the 42nd minute with a well-placed shot but Olympiakos reached halftime deservedly all square when striker Kostas Mitroglou headed an equaliser.

Arsenal, who have never lost to Greek opposition at home, started the second half in more lively fashion and Lukas Podolski fired a second goal through a group of players after 56 minutes. Ramsey secured victory when he dinked the ball over keeper Balazs Megyeri in the fourth minute of extra time.

Montpellier's Souleymane Camara scored a 90th-minute equaliser to snatch a 2-2 draw at Schalke 04 in the other game in Group B.

Teenager Julian Draxler had cancelled out Montpellier's 13th-minute lead through Karim Ait-Fana with a fine goal of his own in the 26th after a pinpoint through ball from Klaas-Jan Huntelaar.

He then earned a penalty early in the second half that left the visitors with 10 men after Garry Bocaly was sent off. Dutch striker Huntelaar had no problem converting it.

However, Camara scored with a last-gasp effort to earn a draw after Schalke had missed a handful of chances.

AC Milan took advantage of two deflected goals to beat Zenit St Petersburg 3-2 in an entertaining Group C match.

The Russians champions fought back from two down to level before Milan scored the winner with 14 minutes remaining when a low Riccardo Montolivo shot hit Zenit defender Tomas Hubocan and slid into the near corner.

The Italians scored twice in the first quarter of an hour, with the home side in disarray. Urby Emanuelson put the visitors ahead with a 20-metre free kick that took a deflection, wrong-footing Zenit keeper Vyacheslav Malafeyev in the 13th minute.

Stephan El Shaarawy, who turns 20 this month, doubled the lead three minutes later after a mazy solo run through the Zenit defence, becoming the youngest player to score for Milan in Europe's elite club competition.

Brazil striker Hulk, who joined Zenit from Porto for a club record €60m before last month's transfer deadline, pulled one back for the home side just before the break before setting up Roman Shirokov's equaliser four minutes into the second half.

Malaga continue to impress in their maiden Champions League campaign as they downed Anderlecht 3-0 away.

Eliseu Pereira netted two superb finishes - the first an unstoppable 25-yard thunderbolt and the second a delicate chip - either side of a Joaquin Sanchez penalty as Manuel Pellegrini's men matched the 3-0 victory they recorded at home to Zenit St Petersburg in their Group C opener.

The Spanish side are now two points clear of second-placed AC Milan.