Inter late show revives hopes
Argentina striker Diego Milito scuffed in the equaliser from Wesley Sneijder's pass and the Dutchman then poked in the winner in the 89th minute after waves of Inter pressure.
Former AC Milan forward Andriy Shevchenko, whose career nosedived under Inter coach Jose Mourinho at Chelsea, opened the scoring for the hosts in the 21st minute with a deflected effort.
Inter, who won for the first time in nine European matches, have six points with two to play and next face holders Barcelona in the Nou Camp on November 24.
Barca and Rubin Kazan have five after their 0-0 draw in Russia while Dynamo are on four having gone from being top to bottom in the space of three exhilarating minutes.
Sneijder, returning after injury to a full-strength Inter lineup, shot just over early on in freezing temperatures.
Shevchenko then put the hosts ahead when his shot from the edge of the box deflected off Esteban Cambiasso and looped over goalkeeper Julio Cesar into the net.
Mourinho threw on midfielder Thiago Motta and forward Mario Balotelli at halftime and the visitors almost equalised immediately when Walter Samuel nodded wide while Samuel Eto'o went even closer with another header.
Ukrainian league leaders Dynamo started with the same side which drew 2-2 in Milan last month and looked like they would repel sustained Inter pressure until Milito netted.
The Italian champions did not stop there and after Milito's shot from a tight angle had been saved, Sneijder reacted quickest to score from close range.
The game had been in doubt after Ukrainian authorities on Friday banned all public events and imposed restrictions on people's movements for a three-week period following a first death from H1N1 flu.
Many fans in the mostly full stadium wore masks.