Hull substitute Tom Cairney swung over a rare Hull corner in the 82nd minute and Johnson sliced the ball into his own net when it appeared Leeds had done enough to halt a run of three successive defeats at Elland Road.
Johnson went from hero to villain for Simon Grayson's side, having thumped home a first-half equaliser after Hull midfielder John Bostock's superb free-kick had given the visitors a shock lead.
Andy O'Brien, on loan from Bolton, appeared to have lifted Leeds back into the top six with a 71st-minute header, but from a rare foray forward Hull, who had Bostock sent off for a second yellow card with 12 minutes left, denied the home side victory.
Hull defender Liam Rosenior headed Luciano Becchio's late header off the line in the closing stages, but the visitors remain without a win in their last eight league matches.
Leeds goalkeeper Kasper Schmeichel returned following the birth of his first child and Alex Bruce and Bradley Johnson were also back in the starting line-up. Hull recalled skipper Ian Ashbee, Richard Garcia and Bostock.
Leeds began full of confidence following two straight away wins, passing the ball freely and looking the more likely to make an early breakthrough.
But the home side were rocked in the 14th minute when Bostock blasted Hull into the lead with a stunning free-kick following Johnson's foul on the teenage midfielder.
Bostock struck the ball left-footed and it arrowed into Schmeichel's top left-hand corner from 30 yards.
Leeds had to wait until the 29th minute until their first noteworthy effort, Jonathan Howson dragging his shot from the edge of the penalty area wide following Becchio's lay-off.
Leeds laboured to build up a head of steam, but drew level in the 33rd minute courtesy of a weak headed clearance from Anthony Gerrard.
Becchio ran onto the loose ball, which bounced off his knee into Johnson's path on the edge of the area and the Leeds midfielder drilled a low shot into Matt Duke's bottom left-hand corner.
Hull's response was immediate, though.
Bruce was forced to hook Bostock's angled shot from inside the area off the line, Kevin Kilbane headed the subsequent corner inches wide and Schmeichel hurled himself to gather the ball at Kamil Zayatte's feet following Andy Dawson's left-wing cross shortly before half-time.
Howson skewed a volley into the side-netting as Leeds patiently probed early in the second period and then Hull were given a let-off in the 55th minute.
Snodgrass teed up Becchio on the edge of the area after some neat build-up and the Argentinian's curling effort had Duke beaten but hit the bar.
Leeds striker Davide Somma replaced Max Gradel in the 68th minute and Hull's Cairney was sent on for Zayette and it was the home side who benefited from the changes.
Howson drilled a superb pass out to Snodgrass and his measured cross was headed into the top corner by O'Brien to give Leeds a deserved 71st-minute lead.
Johnson headed Kilkenny's corner just wide three minutes later, while Bostock received a second yellow card for his lunge on George McCartney to leave the visitors with 10 men for the last 12 minutes.
But Johnson gifted the visitors an equaliser from Cairney's 82nd-minute corner when he swung his leg at the ball at the near post only to slice it into the net.
And Rosenior ensured Hull came away with a point, clearing Becchio's goalbound header off the line.
Leeds Schmeichel, Connolly, Bruce, O'Brien, McCartney, Kilkenny (Sam 88), Howson, Johnson, Gradel (Somma 68), Becchio (Paynter 90), Snodgrass.
Subs Not Used: Brown, Collins, Hughes, Nunez.
Goals: Johnson 33, O'Brien 71.
Hull Duke, Rosenior, Gerrard, Ayala, Dawson, Harper, Ashbee, Bostock, Zayatte (Cairney 68), Kilbane (Cullen 80), Garcia.
Subs Not Used: Mannone, Halmosi, Cooper, Simpson, Solano.
Sent Off: Bostock (78).
Booked: Bostock, Harper, Kilbane, Ayala.
Goals: Bostock 14, Johnson 82 og.
Ref: Kevin Friend (Leicestershire).