The hosts took the lead via route one on 32 minutes when goalkeeper Igor Akinfeev launched a kick upfield, Keisuke Honda headed on and former Manchester United player Zoran Tosic lobbed over Joe Hart in the box.
But less than two minutes later City were level after Aguero got ahead of his marker Sergei Ignashevich to slot home David Silva’s cross from the left.
Aguero then put his side ahead on 42 minutes with a brave header from Alvaro Negredo’s cross from the right with Akinfeev advancing.
Both sides had a goal disallowed in the second period before Hart saved from Keisuke Honda at the death.
The win puts City three points ahead of CSKA in second in the group behind leaders and current champions Bayern Munich and Manuel Pellegrini’s side could all but secure a last-16 spot with a repeat win at the Etihad Stadium in a fortnight.
On a sour note, however, there was racist chanting directed at Yaya Toure from a section of the home support.
The patched-up Arena Khimki surface was sandy, bobbly and bare in patches.
Although it slowed City’s style, the visitors soon asserted themselves against the out-of-form Russian champions, who had lost five of their previous seven games.
The hosts were also forced into an early change as defender Vasili Berezutski left the field and was replaced by his brother Aleksei Berezutski.
City’s first chance came as a corner by Silva was flicked on by Aguero just beyond Toure. Aguero then failed to connect with a volley from a Pablo Zabaleta cross after a good move involving Jesus Navas and Toure.
CSKA showed some attacking intent as Honda was picked out by a long ball. The Japan international’s control initially let him down but he got a second chance and had a shot blocked by Aleksandar Kolarov.
City began to threaten again as Silva weaved his way into the area and Kolarov whipped in a cross which was diverted straight at Akinfeev by Negredo.
It came as a surprise when CSKA grabbed the lead, against the run of play, after 32 minutes. Akinfeev’s long ball was headed on by Honda and Tosic raced through, displaying skill he did not show in his spell at Old Trafford – which amounted to five substitute appearances – to lob Hart.
The goal again highlighted City’s defensive vulnerability in the absence of captain Vincent Kompany, with midfielder Javi Garcia in the back line, but it jolted them into action.
Their response was immediate as they attacked down the left and Silva delivered a fine ball into the area. Aguero edged ahead of his marker to claim and, although the ball got trapped slightly under his foot, he took a touch to dig it out and then slid it home.
It was not long before City had a second, Aguero on target again to head a Negredo cross past Akinfeev from close range after confusion in the home defence from a throw-in.
It was the Argentinian’s eighth goal in his last six games.
City could have had a third before the interval as Navas had a dangerous cross claimed by Akinfeev and the goalkeeper produced a fine one-handed save to keep out a Silva free-kick.
City thought they did have a goal number three in the early moments of the second half but Negredo’s close-range effort was ruled out for handball.
Moments later Toure headed powerfully at goal but Akinfeev saved low to his right and Kolarov curled a free-kick just wide.
CSKA tried to produce a rousing finish and City survived a scare when a superb strike into the top corner by Ahmed Musa was disallowed for a foul on Toure.
Honda then had a golden chance to equalise in stoppage time but Hart got in the way to block his volley at point-blank range as City held on for a massive win as they look to progress out of the group stages for the first time.