Borussia Dortmund collapsed to their second Bundesliga defeat in a row after going down 2-1 to Hoffenheim on Saturday.
Andrej Kramaric struck two penalties, including the winning goal in the eighth minute of stoppage-time, as Serhou Guirassy's late equalizer went in vain.
Having won on their last four visits to Hoffenheim, who also came into the match without a victory in their last four top-flight matches, the BVB were confident of their chances.
However, they struggled to breakdown their hosts as Die Kraichgauer were surprisingly obdurate in the back while also starting the match strongly.
Fisnik Asllani and Tim Lemperle came close to scoring, but it was a handball by Niklas Sule that allowed Kramaric to break the deadlock from the penalty spot in the 42nd minute.
With Die Borussen needing an equalizer, Kovac threw in Guirassy for Fabio Silva and the Guinean repaid the faith by making it 1-1 with only three minutes of normal time left.
But just when it seemed like Dortmund had earned a point, Julian Ryerson is also penalized for a handball and Kramaric buries the penalty again to win it at the death.
Dortmund remained in second with 64 points in 30 games, but their lead over RB Leipzig and Stuttgart was cut to just five and eight points respectively as their Champions League qualification remained on ice.
Here are the player ratings for Dortmund:
Gregor Kobel - 6: Guessed both the penalties wrong
Niklas Sule - 5: Gave away the first penalty with a handball before going off with a knock
Waldemar Anton - 6.5: Kept biting at the heels of Hoffenheim players for possession and showed excellent vision too; seven clearances and five ground duels to boot
Nico Schlotterbeck: 6: Strong in the air and sniffed out any impending danger; seven clearances by him too
Julian Ryerson - 6.5: Dortmund's chief provider lived up to his label, making 13 crosses in the game, but a handball in stoppage time that gifted Hoffenheim the winner eclipsed all his good work
Marcel Sabitzer - 6: Misplaces a couple of passes and struggled to make any telling impact going forward
Jobe Bellingham - 5.5: Came a cropper in his personal duels as Bellingham was way below his best on the night
Daniel Svensson - 5.5: Missed a good chance to score in the game
Carney Chukwuemeka - 6: Sloppy in possession and offered no real threat to Hoffenheim's defense
Maximilian Beier - 5.5: Got beaten in the air more times than he'd have liked and lost most of his duels.
Fabio Silva - 5: Couldn't muster a single effort on target
Substitutes
Ramy Bensebaini - 7.5
Serhou Guirassy - 8
Samuele Inacio - 6.5
Julian Brandt - 6
