The 31-year-old made up for a glaring miss in the first half to seal the points for Bergamo side, though Andrea Stramaccioni will be bitterly disappointed with his team.
Giacomo Bonaventura headed his side into a surprise lead early on, and it held out until after the break, when Fredy Guarin smashed in a free kick from the egde of the area.
But Andrea Stramaccioni's side, which was poor at the back and sluggish throughout, was caught out by Denis' double and can have no complaints at having lost, even though Palacio offered the club fleeting hope late on.
The away side had started well, in fact, but it was Atalanta which took the lead on nine minutes when Bonaventura headed Federico Peluso's whipped cross across Samir Handanovic and into the far corner.
Just moments later Stefano Colantuono's charges were almost in again when Peluso sent another dangerous cross across the face of goal, while Denis fired a volley straight at Handanovic after the ball was worked back into the danger area.
Antonio Cassano stole in on Cristian Raimondi's misjudgement, but the Italy striker was denied by the rushing Andrea Consigli.
A frenetic 15-minute period followed, in which both sides exchanged speculative efforts. Luca Cigarini and Ezequiel Schelotto fired long-range shots over the bar for the home side, while Guarin responded with a couple of his own.
Consigli made another smart stop to turn away Palacio's point-blank header on the line, while at the other end Denis ballooned a shot over the bar from six yards out following Schelotto's low cross from the right. It was a gilt-edged chance for the home side to double the lead, and it deserved better than Denis' wasteful effort. The impressive Maxi Moralez, as ever, had been at the heart of the move.
After the break, Raimondi went unpunished for catching Palacio with a stray arm, before Walter Gargano was booked for a similar offense committed against Moralez.
The bookings began to pile up and Peluso soon went into the book for a trip on Guarin on the edge of the area. And the Colombian made the left back pay when he lashed home the dead ball from 20 yards out, through the hands of Consigli.
But the home side was not to be denied and Denis atoned for his earlier error by stroking his side into the lead once again. Moralez was heavily involved once more, as he found space behind Yuto Nagatomo and squared for the former Udinese and Napoli man to tap home from close range.
Moralez was integral to the home side's third as well. The Argentine won a penalty after being brought down by the lunging Matias Silvestre. Denis made no mistake by sending Handanovic the wrong way.
Things almost got worse for Stramaccioni with eight minutes on the clock, but Handanovic got down well to deny Facundo Parra, who should have done better from 14 yards out.
But just as it looked a lost cause, the away side was back in it when Palacio crashed in a low shot after being played in by Walter Gargano.
Parra was appealing for a penalty almost immediately down the other end, but the referee was not interested. Then, in injury time, the Argentine was sent off for an off-the-ball incident with Guarin.
Stramaccioni's men poured forward at the death and forced a number of corners, but could not find a morale-boosting equalizer that would have kept the club on the heels of league leader Juventus.
Follow GOAL.COM USA on