Goals from Benjani and Stephen Ireland gave Manchester City a precious Uefa Cup victory at Schalke.
Benjani found the back of the net in the 32nd minute following a neat cross from Daniel Sturridge, who featured instead of the injured Robinho, before Ireland doubled the lead in the 67th minute.
The win in Gelsenkirchen puts Mark Hughes' side top of Group A and they need just one point from the final two pool matches to secure passage to the next round. "It couldn't have gone any better for us," Hughes said, "we had a game plan and the players executed it perfectly – it was a very accomplished performance."
The City manager made two changes from the side that beat Arsenal 3-0 at the weekend, with Sturridge replacing Robinho, who was nursing an ankle injury. The former Germany international Dietmar Hamann also found himself in the starting line-up, replacing Pablo Zabaleta (thigh). Vincent Kompany and Richard Dunne featured as centre-backs, with Micah Richards and Javier Garrido completing the back four. Also missing for the visitors were Elano, for personal reasons, and Gelson Fernandes (hamstring).
Sturridge set the pace for an entertaining first half just five minutes into the game when he delivered a dangerous cross from the left which flew past everybody. Joe Hart then made a spectacular diving save after Heiko Westermann had sent Jermaine Jones into the clear with an incisive midfield pass.
The Germany midfielder pulled the trigger from 14 yards out on the right, but Hart diverted the ball for a corner. The Schalke goalkeeper Manuel Neuer was alert too, catching a promising cross from Richards under pressure. After Hart saved a 20-yard volley from Jones, Darius Vassell tried his luck with a shot from outside the right corner of the box which flew well wide.
There were chances on either side, with Neuer saving a header from Vassell and Hart clearing from Kevin Kuranyi inside the six-yard box. The visitors eventually opened the scoring in the 32nd minute following a superb counter-attack.
Kompany turned the ball over for Sturridge to dart down the left wing and the 19-year-old outstripped his opponent and fired in a low cross. It failed to reach Ireland in the middle but Benjani was there at the far post to sweep the ball home.
Schalke failed to create any significant openings in the rest of the half but were vulnerable to counter-attacks, with Neuer denying Ireland from 14 yards out. The rebound was driven in by Benjani and Ireland knocked it home – only for the linesman to raise his flag.
Michael Ball replaced Garrido after the break as City's defence continued to stand tall against Schalke's toothless attacks. It was the visitors who had the first chance of the half when Shaun Wright-Phillips' right-footed shot from 30 yards out forced Neuer into a good save. Richards then saw the first yellow card of the match for stopping a Halil Altintop counter-attack. The resulting free-kick, however, brought no danger.
Ireland was also cautioned shortly afterwards – but moments later, in the 67th minute, the midfielder found the back of the net for a second time, this time legitimately. Benjani had a strike blocked in the left channel, and the ball landed at the feet of the unmarked Ireland who easily beat Neuer with a low shot.
The sell-out crowd of 54,142 fans grew impatient with their team's fruitless attempts to break down City's defence. Substitute Gerald Asamoah came closest in the 76th minute, but his header from seven yards out was superbly saved by Hart. Jo then replaced Benjani in the 84th minute, and the in-form striker received a standing ovation from the 3,000 City fans in attendance as the game drew to a close.
Schalke 04: Neuer; Westermann, Rakitic (Asamoah, 63), Bordon (Howedes, 73), Pander, Engelaar, Jones, Rafinha, Farfan, Altintop (Sanchez, 80), Kuranyi. Substitutes not used: Schober (gk), Kobiashvili, Ernst, Zambrano.
Manchester City: Hart; Richards, Kompany, Dunne, Garrido (Ball, h-t), Wright-Phillips, Hamann, Ireland, Vassell, Mwaruwari (Jo, 84), Sturridge. Substitutes not used: Schmeichel (gk), Evans, Ben-Haim, Berti, Logan.
Referee: A Tudor (Romania).
Manchester City have not lost away in Europe for 29 years – though have only played six matches.