"It's my second derby," McKennie told Bundesliga.com. "The first one we tied 4-4. That was also an amazing feeling. But to be here in, our home stadium, and all the families and the fans and everyone, just the atmosphere..."
Christian Pulisic went the distance for BVB, which dropped to fourth place behind Bayer Leverkusen on goal difference. Pulisic has yet to win in five Ruhr Valley derbies. The first four all ended in ties.
Next up for Schalke 04 is the German Cup, where it hosts Eintracht Frankfurt in the semifinals on Wednesday.
France. Timothy Weah's Paris St. Germain clinched the French Ligue 1 with five games to play when it beat 2017 champion Monaco, 7-1.
Weah, who debuted for the USA in March, has played two games for PSG since being called up following the injury to star Neymar. He did not dress for Sunday's game.
The 18-year-old forward became just the second American to win a big five league title in Europe after Thomas Dooley (Kaiserslautern, 1991).
-- Jordan Siebatcheu scored two goals for Reims in its 3-0 over Paris FC to open up an 11-point lead in Ligue 2. The two goals gave the 21-year-old Siebatcheu 14 goals, tied for second place in Ligue 2.
Trivia: American champions (Big five European league teams)
Thomas Dooley (Kaiserslautern, German Cup, 1990, German Bundesliga, 1991)
John Harkes (Sheffield Wed., English League Cup, 1991)
Kasey Keller (Leicester City, English League Cup, 1997)
*Jovan Kirovski (Borussia Dortmund, Intercontinental Cup, 1997)
Brad Friedel (Blackburn Rovers, English League Cup, 2002)
Tim Howard (Man. United, English FA Cup, 2004)
Christian Pulisic (Borussia Dortmund, German Cup, 2017)
Timothy Weah (Paris SG, French Ligue 1, 2018)
Lalo Fernandez (24, Tigres/MEX), on bench, 2-2 vs. Cruz Azul
Ethan Horvath (22, Club Brugge/BEL), did not dress, 0-1 at Anderlecht
John Brooks (25, Wolfsburg/GER), did not dress, 0-0 vs. Augsbrg
*Cameron Carter-Vickers (20, Ipswich Town/ENG 2), 90 minutes, 1-2 at Nott. Forest
Brendan Hines Ike (23, Orebro/SWE), 90 minutes, 2-1 at Trelleborg
*Matt Miazga (22, Vitesse/NED), 71 minutes, 7-0 vs. Sparta Rotterdam
Shaq Moore (21, Levante/ESP), did not dress, 0-3 at Atletico Madrid
Shane O'Neill (24, Excelsior/NED), on bench, 1-1 at Zwolle
Erik Palmer-Brown (21, Kortrijk/BEL), sub-6 minutes, 2-0 at Lierse
Desevio Payne (22, Excelsior/NED), did not dress, 1-1 at Zwolle
*Antonee Robinson (20, Bolton Wanderers/ENG 2), 90 minutes, 2-2 at Barnsley
Caleb Stanko (24, Freiburg/GER), at Mainz (Monday)
DeAndre Yedlin (24, Newcastle United/ENG), 90 minutes, 1 assist, 2-1 vs. Arsenal
Luca de la Torre (19, Fulham/ENG 2), did not dress, 1-1 vs. Brentford
Jonathan Gonzalez (18, Monterrey/MEX) 4-13
Lyndon Gooch (22, Sunderland/ENG 2), did not dress, 2-2 at Reading
Alejandro Guido (23, Tijuana/MEX), did not dress, 3-0 vs. Guadalajara
Emerson Hyndman (21, Bournemouth/ENG), did not dress, 0-3 at Liverpool
Brian Iloski (22, Legia Warsaw/POL), did not dress, 0-1 vs. Lubin
Jerome Kiesewetter (24, Fortuna Duesseldorf/GER 2), on bench, 1-3 at Heidenheim
Weston McKennie (19, Schalke 04/GER), sub-20 minutes, 2-0 vs. Bor. Dortmund
Keaton Parks (20, Benfica/POR), 90 minutes, 1-0 vs. Arouca
Christian Pulisic (19, Bor. Dortmund/GER), 90 minutes, 0-2 at Schalke 04
Jake Rozhansky (21, Maccabi Netanya/ISR), sub-4 minutes, 3-1 at Bnei Yehuda
Kenny Saief (24, Anderlecht/BEL), 90 minutes, 1-0 vs. Club Brugge
Juan Pablo Torres (18, Lokeren/BEL), did not dress, 3-0 vs. Eupen
Jonathan Amon (18, FC Nordsaelland, DEN), did not dress, 1-2 vs. Midtylland
Romain Gall (22, GIF Sundsvall/SWE), 90 minutes, 1 assist, 2-2 vs. Malmo
*McKinze Gaines (20, Darmstadt/GER 2), did not dress, 1-1 vs. Ein. Braunschweig
Julian Green (22, Greuther Fuerth/GER 2), 63 minutes 1-2 at Jahn Regensburg
Kekuta Manneh (23, Pachuca/MEX), did not dress, 3-1 vs. Santos
*Andrija Novakovich (21, Telstar/NED 2), 90 minutes, 1-0 vs. FC Utrecht II
*Josh Perez (20, Livorno/ITA 3), on bench, 2-1 vs. Pisa
Rubio Rubin (22, Tijuana/MEX), sub-7 minutes, 3-0 vs. Guadalajara
Emmanuel Sabbi (20, Hobro/DEN), vs. Silkeborg (Monday)
Jordan Siebatcheu (21, Reims/FRA 2), 90 minutes, 3-0 vs. Paris FC
Maki Tall (22, Tours/FRA 2), did not dress, 0-1 vs. Chateauroux
Tim Weah (18, Paris SG/FRA), did not dress, 7-1 vs. Monaco
Bobby Wood (25, Hamburg/GER), did not dress, 0-2 at Hoffenheim
*Haji Wright (20, Sandhausen/GER 2), did not dress, 2-0 at Duisburg