Kruger was alone at the edge of the crease when he took a pass from Ben Smith off the boards, turned and wrapped the puck past Devan Dubnyk to put Chicago ahead 4-3.
Keith added his first of the season on a screened shot from the point. It turned out to be the game-winner because Jordan Eberle scored short-handed for the Oilers on a deflection of Nick Schultz's point shot with 1:28 remaining.
Brandon Saad, Andrew Shaw and Bryan Bickell also scored for the Stanley Cup champion Blackhawks (12-2-4), who are 6-0-1 in their last seven games.
Edmonton also got an even-strength goal from Ryan Nugent-Hopkins and power-play scores from Nail Yakupov and David Perron, but lost its third straight and fifth in six games. Sam Gagner missed on a second-period penalty shot.
Chicago goalie Corey Crawford made 19 saves, while Dubnyk had 31.
Both teams and goalies played their second games in two days. The Blackhawks won 5-2 at Dallas on Saturday night, and the Oilers lost 4-2 at Philadelphia in an afternoon game.
Chicago defenceman Michal Rozsival left with just more than 4 minutes left after being hit in the face with a puck.
The Oilers entered with the NHL's worst goals-against average (3.83) on 48 goals in their first 18 games. The Blackhawks came in averaging 3.47 goals, second only to San Jose, and had scored 27 during their last six games.
Saad scored the only goal of a sluggish first period with 1:37 left.
After Brent Seabrook fired the puck around the boards in the Oilers zone, Brandon Pirri centred from the left side of the net.
Edmonton's Philip Larsen got a stick on the centring attempt, but the puck popped into the air and landed in the slot. Saad drove to the net between two Oilers defenders and put a shot into the lower left corner.
Nugent-Hopkins tied it 54 seconds into the second period on a quick shot that fooled Crawford high on the stick side. After taking Perron's feed, Nugent-Hopkins turned and in one motion whipped a shot into the upper left corner.
Gagne was awarded a penalty shot at 4:13 after Seabrook hooked him from behind on a breakaway. On his attempt, Gagne lost control of the puck and slid it wide right after several quick moves in close.
Yakupov's power-play goal at 8:55 put Edmonton ahead 2-1. Set up by Larsen, Yakupov ripped a one-time shot from the top of the right circle past Crawford's glove.
The Blackhawks picked up the pace, tested Dubnyk and tied it at 2 with 2:42 left in the period when Shaw capitalized on another Oilers coverage breakdown.
Saad powered into the Edmonton zone with the puck, but was steered aside by Anton Belov and Larsen. Shaw snuck in behind the play, took Saad's pass and scored on a wrist shot from inside the hashmarks.
Bickell gave Chicago a 3-2 lead at 5:33 of the third when he was left alone at the edge of the crease and stuffed in a rebound of Rozsival's drive from the blue line.
Perron's power-play goal 2:25 later, on a deflection of Larsen's shot from the point, tied it at 3.
NOTES: Gagne is 0 for 2 on penalty shots in his career. . The Oilers finished 1-3-0 on their road trip. ... Chicago C Michal Handzus missed his eighth game with an upper-body and is still "one or two weeks" from returning, according to coach Joel Quenneville. . Veteran G Ilya Bryzgalov, signed by Edmonton to a reported $2 million, one-year deal on Friday, is expected to join Oklahoma City of the AHL for a conditioning stint. He hasn't played an NHL game since April. . Edmonton LW Luke Gazdic (shoulder) sat out. He was injured Saturday in Philadelphia.