Zenit, who have lifted the title three times since 2007, have 40 points from 19 matches, one ahead of second-placed Lokomotiv Moscow who host Rubin Kazan on Saturday.
Luciano Spalletti's men were desperate to turn things around at their Petrovsky Stadium after collecting just two points from their previous four league matches, with the Italian coach fending off criticism from the fans and media.
Brazil striker Hulk continued his fine scoring sequence to grab his ninth league goal of the season in the 12th minute.
Third from bottom Ural equalised with a controversial goal by Spartak Gogniev as he took advantage of a quick free kick by Alexander Erokhin 10 minutes after the break.
Zenit did not even have time to organise their wall and there was also one injured player from each team lying on the field when the goal went in.
The under-fire Spalletti breathed a sigh of relief when Belgium centre back Lombaerts made it 2-1 with a cool finish from close range following compatriot Axel Witsel's right-wing cross 15 minutes from time.
Zenit, who are second in Group G, visit Austria Vienna in their final Champions League match on Wednesday hoping to seal a place in the last 16.
Polish right back Artur Jedrzejczyk scored his first goal of the season midway through the second half to give FK Krasnodar a 1-0 home win over champions CSKA Moscow, their first-ever victory over the army club.
Jedrzejczyk beat the offside trap following a clever assist by lively Brazilian winger Joaozinho and gave CSKA keeper Igor Akinfeev no chance with a curling shot from the edge of the area.
Krasnodar, who were founded in 2008 and won promotion to the top flight two years later, are fifth with 33 points, one point behind CSKA.
Spartak Moscow, third on 36 points, travel to eighth-placed Rostov on Sunday.
- Sports & Recreation
- Luciano Spalletti
- Lokomotiv Moscow