Borussia Monchengladbach frustrated Bayern Munich to emerge with a point in a 1-1 draw on its trip to the runaway Bundesliga leader on Friday night.
Bayern went in search of a winner but found goalkeeper Marc Andre ter Stegen in fine form as Gladbach picked up a point that takes it into the top six.
Gladbach got the better of Bayern twice last season with a counterattacking style of play that won many admirers in the Bundesliga, although none in Munich.
It had the same approach at the Allianz Arena on Friday, packing men behind the ball and looking to hit on the break.
Bayern often struggles against such tactics and tonight was no exception.
On Gladbach's first attack of note, it was given the chance to take the lead when Jerome Boateng blocked a cross with his arm in the area. Marx took the responsibility of stepping up to the spot and had no problem beating Manuel Neuer.
Neuer made a mistake in the 28th minute when he raced out to the touchline where Patrick Herrmann managed to get past him but he could not find a route to the vacated goal.
Bayern raised the tempo in the second half and a Bastian Schweinsteiger shot brought a fine save out of ter Stegen.
The pressure told on Gladbach when Marx lost concentration at the back and passed the ball into the path of Shaqiri, who made no mistake with only ter Stegen to beat.
Bayern went on the attack in the final 10 minutes with Claudio Pizarro brought on for Thomas Muller.
Yet ter Stegen was not beaten again as Gladbach held on to become only the fourth team to take points off Bayern Munich this season.