But Fulham came back from the dead with Senegal striker Kamara pulling one back before Danny Murphy claimed a 79th-minute equaliser after his penalty was saved by Joe Hart.
Kamara then capped an enthralling finish by grabbing the winner with virtually the last kick of the game to secure an invaluable three points.
Fulham named an unchanged line-up and exposed City's make-shift defence in the opening stages, with Simon Davies squaring from the right for Clint Dempsey to fire goalwards, only for Hart to pull off a fine save low to his left.
Fulham's early promise came to an abrupt halt in the 10th minute, though, as Martin Petrov ran at Paul Stalteri down the City left before back-heeling to Ireland, who nonchalantly curled the ball inside the far post from the edge of the box.
Fulham replied with Jimmy Bullard's 30-yard strike forcing another low save from Hart before Dempsey dragged a 20-yard effort wide.
But the Cottagers were left shell-shocked moments later after City carved them open with ease. Elano released Darius Vassell from just inside the Fulham half and his pull-back went between three visiting defenders for Benjani to side-foot home with aplomb from eight yards.
Fulham regrouped and almost cut the deficit just after the half-hour mark when Davies' right-wing cross found David Healy at the far post and Hart made one of many decent saves.
City now looked comfortable, with Kasey Keller having to deny both Vassell and Benjani early in the second half.
Bullard then curled a 25-yard free-kick narrowly wide just after the hour mark before Kamara latched onto a hopeful long ball to turn Vedran Corluka and fire through Hart's legs at the near post.
Hart made amends by turning away Bullard's 20-yard free-kick and then blocked Murphy's penalty low to his right after Sun pulled down Erik Nevland, but Murphy kept his cool to tap in the rebound.
Bullard fired inches over from 25 yards as Fulham pushed for the winner while Dempsey headed straight at Hart from Davies' cross. Felipe Caicedo then fired wide for City, before Keller produced a firm one-handed save to deny Petrov after a surging run by the City winger.
And then deep into stoppage time, Murphy released Kamara to stun City and fire past Hart at his near post.
Hart; Elano, Corluka, Ball, Jihai Sun; Vassell (Caicedo 80), Ireland (Geovanni 56), Gelson, Johnson, Petrov; Benjani. Subs Not Used: Isaksson, Castillo, Logan.
Keller; Stalteri, Hughes, Hangeland, Konchesky; Davies, Bullard, Murphy, Dempsey; Healy (Kamara 63), McBride (Nevland 70). Subs Not Used: Warner, Bocanegra, Andreasen.